From 8612946bf5ef18460e4cbe2a55a2516e76aa39ec Mon Sep 17 00:00:00 2001 From: Filip Zawada Date: Thu, 20 Nov 2014 14:59:45 +0100 Subject: [PATCH] Fix lazy methods to execute non-lazy methods performed in between. --- lodash.js | 2 +- test/test.js | 10 ++++++++++ 2 files changed, 11 insertions(+), 1 deletion(-) diff --git a/lodash.js b/lodash.js index 1bb97669a..961ec335b 100644 --- a/lodash.js +++ b/lodash.js @@ -10266,7 +10266,7 @@ : lodash[methodName](this.value()); } if (isLazy || isArray(value)) { - var result = func.apply(isLazy ? value : new LazyWrapper(this), args); + var result = func.apply(isLazy && !this.__queue__.length ? value : new LazyWrapper(this), args); return new LodashWrapper(result, chainAll); } return this.thru(function(value) { diff --git a/test/test.js b/test/test.js index 850d2d1c9..47d5b4e29 100644 --- a/test/test.js +++ b/test/test.js @@ -1894,6 +1894,16 @@ deepEqual(_.compact(falsey.concat(array)), array); }); + test('should filter falsey values when in between lazy operators', 1, function () { + if (!isNpm) { + var wrapped = _(falsey).map(_.identity).compact().map(_.identity); + deepEqual(wrapped.value(), []); + } + else { + skipTest(2); + } + }); + test('should return a wrapped value when chaining', 2, function() { if (!isNpm) { var wrapped = _(falsey).compact();