繁体   English   中英

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

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM