Short circuit sortedIndexBy methods for empty arrays (#4496)

This commit is contained in:
Graeme Yeates
2019-10-03 16:56:09 -04:00
committed by John-David Dalton
parent 898b378f06
commit 23286d6428
2 changed files with 13 additions and 2 deletions

View File

@@ -18,10 +18,14 @@ const MAX_ARRAY_INDEX = MAX_ARRAY_LENGTH - 1
* into `array`.
*/
function baseSortedIndexBy(array, value, iteratee, retHighest) {
value = iteratee(value)
let low = 0
let high = array == null ? 0 : array.length
if (high == 0) {
return 0
}
value = iteratee(value)
const valIsNaN = value !== value
const valIsNull = value === null
const valIsSymbol = isSymbol(value)

View File

@@ -24,6 +24,13 @@ describe('sortedIndexBy methods', function() {
assert.strictEqual(actual, 1);
});
it('`_.' + methodName + '` should avoid calling iteratee when length is 0', function() {
var objects = [],
actual = func(objects, { 'x': 50 }, assert.fail);
assert.strictEqual(actual, 0);
});
it('`_.' + methodName + '` should support arrays larger than `MAX_ARRAY_LENGTH / 2`', function() {
lodashStable.each([Math.ceil(MAX_ARRAY_LENGTH / 2), MAX_ARRAY_LENGTH], function(length) {
var array = [],