不知道怎么说这个但是说我正在尝试创建一个字符串数组,并且每个字符串的存在取决于条件
我现在正在做的事情正在进行中
somelist = [
true ? 'foo' : null,
false ? 'bar' : null
]
因为我不想给错误的条件赋予任何价值,但我能想出的唯一方法是给它们所有的空值。
我知道我可以为每个人做一个if语句并推送它,如果是这样,但也许有更好的方法?
我只是想出了一种解决方案。
somelist = somelist.filter(value => value !== null)
但还有更短的路吗?
如果您控制数据,则应使用if语句并有条件地将数据推送到数组。循环遍历数组以过滤掉您添加的空值是没有意义的。
如果您不控制数据,那么removing empty elements就会出现这个问题
如果你的死设置使用构造函数javascript让你做有趣的事情,比如扩展数组
class NoNullArray extends Array{
constructor(...elements){
super(...elements.filter(element=>element !== null))
}
}
var somelist = new NoNullArray(
true ? 'foo' : null,
false ? 'bar' : null
);
也许有点hacky,但你可以做到
//define condition-value pairs
let somelist = [
true, 'foo',
false, 'bar',
//...
]
//filter the odd indices that are preceeded by a truthy value
.filter((v,i,a) => i&1 && a[i-1]);
这样,你可以摆脱三元运算并首先编写null
值