From 2884f8acb8e7380c5c77d3522aaa4373c1f674f2 Mon Sep 17 00:00:00 2001 From: jdalton Date: Thu, 26 Mar 2015 13:17:41 -0700 Subject: [PATCH] Ensure `_.intersection` of a single array returns an empty array. [closes #1085] --- lodash.src.js | 7 +++++-- test/test.js | 16 ++++++++-------- 2 files changed, 13 insertions(+), 10 deletions(-) diff --git a/lodash.src.js b/lodash.src.js index d14db3568..f18c1fa8f 100644 --- a/lodash.src.js +++ b/lodash.src.js @@ -5094,7 +5094,8 @@ argsLength = arguments.length, caches = [], indexOf = getIndexOf(), - isCommon = indexOf == baseIndexOf; + isCommon = indexOf == baseIndexOf, + result = []; while (++argsIndex < argsLength) { var value = arguments[argsIndex]; @@ -5104,10 +5105,12 @@ } } argsLength = args.length; + if (argsLength < 2) { + return result; + } var array = args[0], index = -1, length = array ? array.length : 0, - result = [], seen = caches[0]; outer: diff --git a/test/test.js b/test/test.js index 92c2a93ad..d71befd8b 100644 --- a/test/test.js +++ b/test/test.js @@ -6595,14 +6595,14 @@ deepEqual(actual, [1, 2]); }); - test('should return an array of unique values', 2, function() { - var array = [1, 1, 3, 2, 2]; - deepEqual(_.intersection(array, [5, 2, 2, 1, 4], [2, 1, 1]), [1, 2]); - deepEqual(_.intersection(array), [1, 3, 2]); + test('should return an array of unique values', 1, function() { + var actual = _.intersection([1, 1, 3, 2, 2], [5, 2, 2, 1, 4], [2, 1, 1]); + deepEqual(actual, [1, 2]); }); test('should match `NaN`', 1, function() { - deepEqual(_.intersection([1, NaN, 3], [NaN, 5, NaN]), [NaN]); + var actual = _.intersection([1, NaN, 3], [NaN, 5, NaN]); + deepEqual(actual, [NaN]); }); test('should work with large arrays of objects', 1, function() { @@ -6627,7 +6627,7 @@ test('should ignore values that are not arrays or `arguments` objects', 3, function() { var array = [0, 1, null, 3]; - deepEqual(_.intersection(array, 3, null, { '0': 1 }), array); + deepEqual(_.intersection(array, 3, null, { '0': 1 }), []); deepEqual(_.intersection(null, array, null, [2, 1]), [1]); deepEqual(_.intersection(array, null, args, null), [1, 3]); }); @@ -16405,7 +16405,7 @@ } deepEqual(_.difference(null, array), [], message('difference')); - deepEqual(_.intersection(null, array), array, message('intersection')); + deepEqual(_.intersection(null, array), [], message('intersection')); deepEqual(_.union(null, array), array, message('union')); deepEqual(_.xor(null, array), array, message('xor')); }); @@ -16416,7 +16416,7 @@ } deepEqual(_.difference(array, null), array, message('difference')); - deepEqual(_.intersection(array, null), array, message('intersection')); + deepEqual(_.intersection(array, null), [], message('intersection')); deepEqual(_.union(array, null), array, message('union')); }); }(1, null, [3], null, 5));