javascript - 根据条件在定义时添加数组元素

标签 javascript ecmascript-6

我这样定义一个数组:

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

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

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

事实上它添加了 false 作为数组项:

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

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

最佳答案

您可以使用带有扩展语法的 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);

关于javascript - 根据条件在定义时添加数组元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49302745/

相关文章:

javascript - AngularJS 在用户点击范围内等待 $resource Promise

javascript - <ul> 的 css 在回发 .net 页面时丢失

javascript - canvasjs,使用可变数据/图例创建图表

JavaScript:如何在 for 循环中同时声明 var 和 let 变量

Javascript 按对象数组(复杂对象)分组

javascript - 使用最后一个文本框值填充新添加的文本框

javascript - javascript中页面的高度

javascript - 在 ES6 中将数组解构为函数参数的语法

javascript - 如何在 ES6 中强制执行严格的类模式

node.js - 找不到模块 XYZ