你可以通过构造函数在javascript中创建一个值数组,其中有条件地生成值吗?

问题描述 投票:-2回答:2

不知道怎么说这个但是说我正在尝试创建一个字符串数组,并且每个字符串的存在取决于条件

我现在正在做的事情正在进行中

somelist = [
    true ? 'foo' : null,
    false ? 'bar' : null
]

因为我不想给错误的条件赋予任何价值,但我能想出的唯一方法是给它们所有的空值。

我知道我可以为每个人做一个if语句并推送它,如果是这样,但也许有更好的方法?

我只是想出了一种解决方案。

somelist = somelist.filter(value => value !== null)

但还有更短的路吗?

javascript arrays list arraylist
2个回答
0
投票

如果您控制数据,则应使用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
);

0
投票

也许有点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

© www.soinside.com 2019 - 2024. All rights reserved.