在定义期间根据条件添加数组元素

时间:2018-03-15 14:57:15

标签: javascript ecmascript-6

我定义了一个这样的数组:

[{foo:0}, true === false && { foobar:1}, {bar:2}]

我的预期结果是,当不满足中间条件时,根本不添加中间项:

[ { foo: 0 }, { bar: 2 } ]

实际上它将false添加为数组项:

[ { foo: 0 }, false, { bar: 2 } ]

有没有办法阻止在保持这种轻量级语法的同时添加false(我知道我总是可以使用push或spread运算符)

2 个答案:

答案 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);