Spaces:
Runtime error
Runtime error
var isSymbol = require('./isSymbol'); | |
/** | |
* Compares values to sort them in ascending order. | |
* | |
* @private | |
* @param {*} value The value to compare. | |
* @param {*} other The other value to compare. | |
* @returns {number} Returns the sort order indicator for `value`. | |
*/ | |
function compareAscending(value, other) { | |
if (value !== other) { | |
var valIsDefined = value !== undefined, | |
valIsNull = value === null, | |
valIsReflexive = value === value, | |
valIsSymbol = isSymbol(value); | |
var othIsDefined = other !== undefined, | |
othIsNull = other === null, | |
othIsReflexive = other === other, | |
othIsSymbol = isSymbol(other); | |
if ((!othIsNull && !othIsSymbol && !valIsSymbol && value > other) || | |
(valIsSymbol && othIsDefined && othIsReflexive && !othIsNull && !othIsSymbol) || | |
(valIsNull && othIsDefined && othIsReflexive) || | |
(!valIsDefined && othIsReflexive) || | |
!valIsReflexive) { | |
return 1; | |
} | |
if ((!valIsNull && !valIsSymbol && !othIsSymbol && value < other) || | |
(othIsSymbol && valIsDefined && valIsReflexive && !valIsNull && !valIsSymbol) || | |
(othIsNull && valIsDefined && valIsReflexive) || | |
(!othIsDefined && valIsReflexive) || | |
!othIsReflexive) { | |
return -1; | |
} | |
} | |
return 0; | |
} | |
module.exports = compareAscending; | |