35 lines
1.0 KiB
JavaScript
35 lines
1.0 KiB
JavaScript
|
/**
|
||
|
* The base implementation of `compareAscending` which compares values and
|
||
|
* sorts them in ascending order without guaranteeing a stable sort.
|
||
|
*
|
||
|
* @private
|
||
|
* @param {*} value The value to compare.
|
||
|
* @param {*} other The other value to compare.
|
||
|
* @returns {number} Returns the sort order indicator for `value`.
|
||
|
*/
|
||
|
function baseCompareAscending(value, other) {
|
||
|
if (value !== other) {
|
||
|
var valIsNull = value === null,
|
||
|
valIsUndef = value === undefined,
|
||
|
valIsReflexive = value === value;
|
||
|
|
||
|
var othIsNull = other === null,
|
||
|
othIsUndef = other === undefined,
|
||
|
othIsReflexive = other === other;
|
||
|
|
||
|
if ((value > other && !othIsNull) || !valIsReflexive ||
|
||
|
(valIsNull && !othIsUndef && othIsReflexive) ||
|
||
|
(valIsUndef && othIsReflexive)) {
|
||
|
return 1;
|
||
|
}
|
||
|
if ((value < other && !valIsNull) || !othIsReflexive ||
|
||
|
(othIsNull && !valIsUndef && valIsReflexive) ||
|
||
|
(othIsUndef && valIsReflexive)) {
|
||
|
return -1;
|
||
|
}
|
||
|
}
|
||
|
return 0;
|
||
|
}
|
||
|
|
||
|
module.exports = baseCompareAscending;
|