diff --git a/lodash.js b/lodash.js index 538c05a90..6022bb8e5 100644 --- a/lodash.js +++ b/lodash.js @@ -2696,7 +2696,10 @@ * _.intersection([1, 2, 3], [5, 2, 1, 4], [2, 1]); * // => [1, 2] */ - function intersection() { + function intersection(array) { + if (!array) { + return []; + } var args = [], argsIndex = -1, argsLength = arguments.length, @@ -2710,9 +2713,10 @@ if (isArray(value) || isArguments(value)) { args.push(value); caches.push(prereq && value.length >= 120 && - createCache(argsIndex ? args[argsIndex] : seen)); + createCache(argsIndex ? value : seen)); } } + argsLength = args.length; var array = args[0], index = -1, length = array ? array.length : 0, diff --git a/test/test.js b/test/test.js index 44994957e..44ee10d0f 100644 --- a/test/test.js +++ b/test/test.js @@ -3524,7 +3524,8 @@ }); 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(_.intersection(array, null), [], message('intersection')); + deepEqual(_.intersection(array, null), array, message('intersection')); deepEqual(_.union(array, null), array, message('union')); }); }(1, null, [3], null, 5));