diff --git a/lodash.js b/lodash.js index abded307b..e51356bfc 100644 --- a/lodash.js +++ b/lodash.js @@ -5336,11 +5336,11 @@ * // => [1] */ var concat = rest(function(array, values) { - if (array == null) { - return []; + if (!isArray(array)) { + array = array == null ? [] : [Object(array)]; } values = baseFlatten(values); - return arrayConcat(isArray(array) ? array : [Object(array)], values); + return arrayConcat(array, values); }); /** diff --git a/test/test.js b/test/test.js index c3256fada..605125d92 100644 --- a/test/test.js +++ b/test/test.js @@ -2842,6 +2842,21 @@ assert.deepEqual(actual, expected); }); + QUnit.test('should treat nullish `array` values as empty arrays', function(assert) { + assert.expect(1); + + var values = [null, undefined], + expected = lodashStable.map(values, lodashStable.constant([1, 2, [3]])); + + var actual = lodashStable.map(values, function(value) { + try { + return _.concat(value, 1, [2], [[3]]); + } catch (e) {} + }); + + assert.deepEqual(actual, expected); + }); + QUnit.test('should treat sparse arrays as dense', function(assert) { assert.expect(3);