mirror of
https://github.com/whoisclebs/lodash.git
synced 2026-01-31 15:27:50 +00:00
Ensure _.concat cases wraps nullish array values in an array.
This commit is contained in:
18
lodash.js
18
lodash.js
@@ -5853,13 +5853,19 @@
|
||||
* console.log(array);
|
||||
* // => [1]
|
||||
*/
|
||||
var concat = rest(function(array, values) {
|
||||
if (!isArray(array)) {
|
||||
array = array == null ? [] : [array];
|
||||
function concat() {
|
||||
var length = arguments.length;
|
||||
if (!length) {
|
||||
return [];
|
||||
}
|
||||
values = baseFlatten(values, 1);
|
||||
return arrayConcat(array, values);
|
||||
});
|
||||
var array = castArray(arguments[0]),
|
||||
args = Array(length - 1);
|
||||
|
||||
while (length--) {
|
||||
args[length - 1] = arguments[length];
|
||||
}
|
||||
return arrayConcat(array, baseFlatten(args, 1));
|
||||
}
|
||||
|
||||
/**
|
||||
* Creates an array of unique `array` values not included in the other given
|
||||
|
||||
42
test/test.js
42
test/test.js
@@ -3066,46 +3066,26 @@
|
||||
assert.deepEqual(array, [1]);
|
||||
});
|
||||
|
||||
QUnit.test('should return an empty array when `array` is nullish', function(assert) {
|
||||
assert.expect(1);
|
||||
QUnit.test('should cast non-array `array` values to arrays', function(assert) {
|
||||
assert.expect(2);
|
||||
|
||||
var values = [, null, undefined],
|
||||
expected = lodashStable.map(values, alwaysEmptyArray);
|
||||
var values = [, null, undefined, false, true, 1, NaN, 'a'];
|
||||
|
||||
var expected = lodashStable.map(values, function(value, index) {
|
||||
return index ? [value] : [];
|
||||
});
|
||||
|
||||
var actual = lodashStable.map(values, function(value, index) {
|
||||
try {
|
||||
return index ? _.concat(value) : _.concat();
|
||||
} catch (e) {}
|
||||
return index ? _.concat(value) : _.concat();
|
||||
});
|
||||
|
||||
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) {}
|
||||
expected = lodashStable.map(values, function(value) {
|
||||
return [value, 2, [3]];
|
||||
});
|
||||
|
||||
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) {
|
||||
actual = lodashStable.map(values, function(value) {
|
||||
return _.concat(value, [2], [[3]]);
|
||||
});
|
||||
|
||||
|
||||
Reference in New Issue
Block a user