Files
lodash/.internal/compareAscending.js
John-David Dalton 6cb3460fce Remove semicolons.
2017-02-05 22:22:04 -08:00

42 lines
1.3 KiB
JavaScript

import isSymbol from '../isSymbol.js'
/**
* 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) {
const valIsDefined = value !== undefined
const valIsNull = value === null
const valIsReflexive = value === value
const valIsSymbol = isSymbol(value)
const othIsDefined = other !== undefined
const othIsNull = other === null
const othIsReflexive = other === other
const 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
}
export default compareAscending