| /** |
| * 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; |