如何定义条件数组元素? 我想这样做:
const cond = true;
const myArr = ["foo", cond && "bar"];
这正如预期的那样工作,结果是["foo", "bar"],但如果我将cond设置为false,我得到以下结果:["foo", false]
如何定义具有条件元素的数组?
如何定义条件数组元素? 我想这样做:
const cond = true;
const myArr = ["foo", cond && "bar"];
这正如预期的那样工作,结果是["foo", "bar"],但如果我将cond设置为false,我得到以下结果:["foo", false]
如何定义具有条件元素的数组?
当前回答
有几种不同的方法,但这种方法并不适用于Javascript。
最简单的解决方案是使用if语句。
if (myCond) arr.push(element);
还有过滤器,但我不认为这是你在这里想要的,因为你似乎要“添加这个东西,如果这个条件是真的”,而不是根据某些条件检查所有东西。虽然,如果你想变得非常怪异,你可以这样做(不建议,但你可以这样做很酷)。
var arr = ["a", cond && "bar"];
arr.filter( e => e)
基本上它会过滤掉所有非真值。
其他回答
有几种不同的方法,但这种方法并不适用于Javascript。
最简单的解决方案是使用if语句。
if (myCond) arr.push(element);
还有过滤器,但我不认为这是你在这里想要的,因为你似乎要“添加这个东西,如果这个条件是真的”,而不是根据某些条件检查所有东西。虽然,如果你想变得非常怪异,你可以这样做(不建议,但你可以这样做很酷)。
var arr = ["a", cond && "bar"];
arr.filter( e => e)
基本上它会过滤掉所有非真值。
如果你正在使用es6,我会建议
Let array = [ “自行车”, “汽车”, Name === "van" ?"van": null, “公共汽车”, “卡车”, ] .filter(布尔);
如果name = "van",该数组将只包含值"van",否则将被丢弃。
如果你真的想把它作为一行,你可以使用:
const cond = true;
const myArr = ["foo"].concat(cond ? ["bar"] : []);
替代方法:预过滤填充而不是后过滤:
const populate = function(...values) {
return values.filter(function(el) {
return el !== false
});
};
console.log(populate("foo", true && "bar", false && "baz"))
返回
(2) ["foo", "bar"]
我知道这不能解决速记符号(因为无论你怎么尝试,它都不会起作用),但它接近于那个。
除了使用push,你没有太多的选择:
const cond = true;
const myArr = ["foo"];
if (cond) myArr.push("bar");
另一个想法是添加null并过滤掉它们:
const cond = true;
const myArr = ["foo", cond ? "bar" : null];
myArr = myArr.filter((item) => item !== null);