Ensure _.sortedIndex and _.sortedLastIndex align with _.sortBy.

This commit is contained in:
John-David Dalton
2014-07-27 19:40:10 -07:00
parent 9cc8f5dd07
commit 1580453f4b
2 changed files with 25 additions and 5 deletions

View File

@@ -428,7 +428,7 @@
* @returns {number} Returns the sort order indicator for `object`.
*/
function compareAscending(object, other) {
return baseCompareAscending(object.criteria, other.criteria) || object.index - other.index;
return baseCompareAscending(object.criteria, other.criteria) || (object.index - other.index);
}
/**
@@ -2404,12 +2404,14 @@
while (low < high) {
var mid = (low + high) >>> 1,
computed = iterator(array[mid]);
computed = iterator(array[mid]),
setLow = retHighest ? computed <= value : computed < value;
if (hintNum && typeof computed != 'undefined') {
computed = +computed || 0;
computed = +computed;
setLow = computed != computed || setLow;
}
if (retHighest ? computed <= value : computed < value) {
if (setLow) {
low = mid + 1;
} else {
high = mid;

View File

@@ -9684,7 +9684,25 @@
strictEqual(actual, 1);
});
test('`_.' + methodName + '` supports arrays with lengths larger than `Math.pow(2, 31) - 1`', 1, function() {
test('`_.' + methodName + '` should align with `_.sortBy`', 8, function() {
var array = [NaN, {}, NaN, 1, 2, undefined];
deepEqual(_.sortBy(array), array);
strictEqual(func(array, 3), 5);
array = [1, 2, NaN, {}, NaN, undefined];
deepEqual(_.sortBy(array), array);
strictEqual(func(array, 3), 5);
array = [NaN, {}, NaN, '1', '2', undefined];
deepEqual(_.sortBy(array), array);
strictEqual(func(array, '3'), 5);
array = ['1', '2', NaN, {}, NaN, undefined];
deepEqual(_.sortBy(array), array);
strictEqual(func(array, '3'), 2);
});
test('`_.' + methodName + '` should support arrays larger than `Math.pow(2, 31) - 1`', 1, function() {
var length = Math.pow(2, 32) - 1,
index = length - 1,
array = Array(length),