[英]Add array element during definition based on condition
我定义了一个这样的数组:
[{foo:0}, true === false && { foobar:1}, {bar:2}]
我的预期结果是,当不满足中间条件时,根本不添加中间项:
[ { foo: 0 }, { bar: 2 } ]
实际上它将false添加为数组项:
[ { foo: 0 }, false, { bar: 2 } ]
有没有办法防止在保持这种轻量级语法的同时添加false
(我知道我总是可以使用push或spread运算符)
您可以使用带有扩展语法的concat
和一个空数组作为中性值。
var a = [].concat(...[ { foo: 0 }, true === false ? { foobar: 1 } : [], { bar: 2 } ]); console.log(a);
申请
var a = Array.prototype.concat.apply([], [ { foo: 0 }, true === false ? { foobar: 1 } : [], { bar: 2 } ]); console.log(a);
正如Denys建议的那样,你可以这样做:
const arr = [{foo:0}, true === false && { foobar:1}, {bar:2}].filter(el => el !== false); console.log(arr);
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.