Ensure _.intersection handles non-array secondary values correctly.

This commit is contained in:
John-David Dalton
2014-03-08 16:36:05 -08:00
parent 445445603f
commit 737e18d2de
2 changed files with 9 additions and 4 deletions

View File

@@ -2696,7 +2696,10 @@
* _.intersection([1, 2, 3], [5, 2, 1, 4], [2, 1]); * _.intersection([1, 2, 3], [5, 2, 1, 4], [2, 1]);
* // => [1, 2] * // => [1, 2]
*/ */
function intersection() { function intersection(array) {
if (!array) {
return [];
}
var args = [], var args = [],
argsIndex = -1, argsIndex = -1,
argsLength = arguments.length, argsLength = arguments.length,
@@ -2710,9 +2713,10 @@
if (isArray(value) || isArguments(value)) { if (isArray(value) || isArguments(value)) {
args.push(value); args.push(value);
caches.push(prereq && value.length >= 120 && caches.push(prereq && value.length >= 120 &&
createCache(argsIndex ? args[argsIndex] : seen)); createCache(argsIndex ? value : seen));
} }
} }
argsLength = args.length;
var array = args[0], var array = args[0],
index = -1, index = -1,
length = array ? array.length : 0, length = array ? array.length : 0,

View File

@@ -3524,7 +3524,8 @@
}); });
test('should ignore individual secondary values', 1, function() { test('should ignore individual secondary values', 1, function() {
deepEqual(_.intersection([1, null, 3], 3, null), []); var array = [1, null, 3];
deepEqual(_.intersection([1, null, 3], 3, null), array);
}); });
}()); }());
@@ -9212,7 +9213,7 @@
} }
deepEqual(_.difference(array, null), array, message('difference')); deepEqual(_.difference(array, null), array, message('difference'));
deepEqual(_.intersection(array, null), [], message('intersection')); deepEqual(_.intersection(array, null), array, message('intersection'));
deepEqual(_.union(array, null), array, message('union')); deepEqual(_.union(array, null), array, message('union'));
}); });
}(1, null, [3], null, 5)); }(1, null, [3], null, 5));