From 1a28ef32442a26f3d5c301f38e12aa753ef213f5 Mon Sep 17 00:00:00 2001 From: jdalton Date: Wed, 10 Jun 2015 18:37:09 -0700 Subject: [PATCH] Ensure `_.includes` matches an empty string on empty strings. [closes #1275] --- lodash.src.js | 7 ++----- test/test.js | 6 ++++-- 2 files changed, 6 insertions(+), 7 deletions(-) diff --git a/lodash.src.js b/lodash.src.js index 184c43733..1167f0748 100644 --- a/lodash.src.js +++ b/lodash.src.js @@ -6660,17 +6660,14 @@ collection = values(collection); length = collection.length; } - if (!length) { - return false; - } if (typeof fromIndex != 'number' || (guard && isIterateeCall(target, fromIndex, guard))) { fromIndex = 0; } else { fromIndex = fromIndex < 0 ? nativeMax(length + fromIndex, 0) : (fromIndex || 0); } return (typeof collection == 'string' || !isArray(collection) && isString(collection)) - ? (fromIndex < length && collection.indexOf(target, fromIndex) > -1) - : (getIndexOf(collection, target, fromIndex) > -1); + ? (fromIndex <= length && collection.indexOf(target, fromIndex) > -1) + : (!!length && getIndexOf(collection, target, fromIndex) > -1); } /** diff --git a/test/test.js b/test/test.js index a281cc43a..27d7d56c6 100644 --- a/test/test.js +++ b/test/test.js @@ -6244,7 +6244,9 @@ 'a string': '1234' }, function(collection, key) { - var values = _.toArray(collection); + var isStr = typeof collection == 'string', + values = _.toArray(collection), + length = values.length; test('should work with ' + key + ' and return `true` for matched values', 1, function() { strictEqual(_.includes(collection, 3), true); @@ -6263,7 +6265,7 @@ _.each([4, 6, Math.pow(2, 32), Infinity], function(fromIndex) { strictEqual(_.includes(collection, 1, fromIndex), false); strictEqual(_.includes(collection, undefined, fromIndex), false); - strictEqual(_.includes(collection, '', fromIndex), false); + strictEqual(_.includes(collection, '', fromIndex), (isStr && fromIndex == length)); }); });