diff --git a/lodash.js b/lodash.js index eeeb9dc50..db18c2bb5 100644 --- a/lodash.js +++ b/lodash.js @@ -5855,7 +5855,7 @@ */ var concat = rest(function(array, values) { if (!isArray(array)) { - array = array == null ? [] : [Object(array)]; + array = array == null ? [] : [array]; } values = baseFlatten(values, 1); return arrayConcat(array, values); diff --git a/test/test.js b/test/test.js index 30ee33be6..55ee34d57 100644 --- a/test/test.js +++ b/test/test.js @@ -3096,6 +3096,22 @@ assert.deepEqual(actual, expected); }); + QUnit.test('should cast non-array `array` values to arrays', function(assert) { + assert.expect(1); + + var values = [true, false, 1, NaN, 'a']; + + var expected = lodashStable.map(values, function(value) { + return [value, 2, [3]] + }); + + var actual = lodashStable.map(values, function(value) { + return _.concat(value, [2], [[3]]); + }); + + assert.deepEqual(actual, expected); + }); + QUnit.test('should treat sparse arrays as dense', function(assert) { assert.expect(3);