mirror of
https://github.com/whoisclebs/lodash.git
synced 2026-02-09 18:37:50 +00:00
Fix lazy slice when used after filter. [closes #955]
This commit is contained in:
@@ -1248,7 +1248,7 @@
|
|||||||
end = view.end,
|
end = view.end,
|
||||||
length = end - start,
|
length = end - start,
|
||||||
dropCount = this.__dropCount__,
|
dropCount = this.__dropCount__,
|
||||||
takeCount = nativeMin(length, this.__takeCount__ - dropCount),
|
takeCount = nativeMin(length, this.__takeCount__),
|
||||||
index = isRight ? end : start - 1,
|
index = isRight ? end : start - 1,
|
||||||
iteratees = this.__iteratees__,
|
iteratees = this.__iteratees__,
|
||||||
iterLength = iteratees ? iteratees.length : 0,
|
iterLength = iteratees ? iteratees.length : 0,
|
||||||
|
|||||||
43
test/test.js
43
test/test.js
@@ -12044,35 +12044,38 @@
|
|||||||
notStrictEqual(actual, array);
|
notStrictEqual(actual, array);
|
||||||
});
|
});
|
||||||
|
|
||||||
test('should work in a lazy chain sequence', 18, function() {
|
test('should work in a lazy chain sequence', 38, function() {
|
||||||
if (!isNpm) {
|
if (!isNpm) {
|
||||||
var wrapped = _(array);
|
var wrapped = _(array);
|
||||||
|
|
||||||
deepEqual(wrapped.slice(0, -1).value(), [1, 2]);
|
_.each(['map', 'filter'], function(methodName) {
|
||||||
deepEqual(wrapped.slice(1).value(), [2, 3]);
|
deepEqual(wrapped[methodName]().slice(0, -1).value(), [1, 2]);
|
||||||
deepEqual(wrapped.slice(-1).value(), [3]);
|
deepEqual(wrapped[methodName]().slice(1).value(), [2, 3]);
|
||||||
|
deepEqual(wrapped[methodName]().slice(1, 3).value(), [2, 3]);
|
||||||
|
deepEqual(wrapped[methodName]().slice(-1).value(), [3]);
|
||||||
|
|
||||||
deepEqual(wrapped.slice(4).value(), []);
|
deepEqual(wrapped[methodName]().slice(4).value(), []);
|
||||||
deepEqual(wrapped.slice(3, 2).value(), []);
|
deepEqual(wrapped[methodName]().slice(3, 2).value(), []);
|
||||||
deepEqual(wrapped.slice(0, -4).value(), []);
|
deepEqual(wrapped[methodName]().slice(0, -4).value(), []);
|
||||||
deepEqual(wrapped.slice(0, null).value(), []);
|
deepEqual(wrapped[methodName]().slice(0, null).value(), []);
|
||||||
|
|
||||||
deepEqual(wrapped.slice(0, 4).value(), array);
|
deepEqual(wrapped[methodName]().slice(0, 4).value(), array);
|
||||||
deepEqual(wrapped.slice(-4).value(), array);
|
deepEqual(wrapped[methodName]().slice(-4).value(), array);
|
||||||
deepEqual(wrapped.slice(null).value(), array);
|
deepEqual(wrapped[methodName]().slice(null).value(), array);
|
||||||
|
|
||||||
deepEqual(wrapped.slice(0, 1).value(), [1]);
|
deepEqual(wrapped[methodName]().slice(0, 1).value(), [1]);
|
||||||
deepEqual(wrapped.slice(NaN, '1').value(), [1]);
|
deepEqual(wrapped[methodName]().slice(NaN, '1').value(), [1]);
|
||||||
|
|
||||||
deepEqual(wrapped.slice(0.1, 1.1).value(), [1]);
|
deepEqual(wrapped[methodName]().slice(0.1, 1.1).value(), [1]);
|
||||||
deepEqual(wrapped.slice('0', 1).value(), [1]);
|
deepEqual(wrapped[methodName]().slice('0', 1).value(), [1]);
|
||||||
deepEqual(wrapped.slice(0, '1').value(), [1]);
|
deepEqual(wrapped[methodName]().slice(0, '1').value(), [1]);
|
||||||
deepEqual(wrapped.slice('1').value(), [2, 3]);
|
deepEqual(wrapped[methodName]().slice('1').value(), [2, 3]);
|
||||||
deepEqual(wrapped.slice(NaN, 1).value(), [1]);
|
deepEqual(wrapped[methodName]().slice(NaN, 1).value(), [1]);
|
||||||
deepEqual(wrapped.slice(1, NaN).value(), []);
|
deepEqual(wrapped[methodName]().slice(1, NaN).value(), []);
|
||||||
|
});
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
skipTest(18);
|
skipTest(38);
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
}());
|
}());
|
||||||
|
|||||||
Reference in New Issue
Block a user