我定义了一个这样的数组:
[{foo:0}, true === false && { foobar:1}, {bar:2}]
我的预期结果是,当不满足中间条件时,根本不添加中间项:
[ { foo: 0 }, { bar: 2 } ]
实际上它将false添加为数组项:
[ { foo: 0 }, false, { bar: 2 } ]
有没有办法阻止在保持这种轻量级语法的同时添加false
(我知道我总是可以使用push或spread运算符)
答案 0 :(得分:3)
您可以将concat
使用扩展语法,将空数组用作中性值。
var a = [].concat(...[
{ foo: 0 },
true === false ? { foobar: 1 } : [],
{ bar: 2 }
]);
console.log(a);
使用apply
var a = Array.prototype.concat.apply([], [
{ foo: 0 },
true === false ? { foobar: 1 } : [],
{ bar: 2 }
]);
console.log(a);
答案 1 :(得分:0)
正如Denys建议的那样,你可以这样做:
const arr = [{foo:0}, true === false && { foobar:1}, {bar:2}].filter(el => el !== false);
console.log(arr);