如何定义具有条件元素的数组?

2022-08-30 00:53:23

如何定义条件数组元素?我想做这样的事情:

const cond = true;
const myArr = ["foo", cond && "bar"];

这按预期工作并产生结果,但是如果我设置为 ,我会得到以下结果:["foo", "bar"]condfalse["foo", false]

如何定义具有条件元素的数组?


答案 1

当条件为 时,您可以在数组内展开数组,以保持项目数组的干净。false

以下是操作方法

// Will result in ['foo', 'bar']
const items = [
  'foo',
  ... true ? ['bar'] : [],
  ... false ? ['falsy'] : [],
]

console.log(items)

说明

如您所见,三元运算符始终返回一个数组。

如果条件是 ,则返回 ,否则返回空数组。true['bar'][]

之后,我们展开生成的数组(来自三元运算),并将数组的项目推送到父数组。...

如果没有任何数组项(当三元校验是 )时,则不会推送任何内容,这是我们的目标。false


在其他答案中,我解释了同样的想法,但对于对象。您也可以在此处进行检查。


答案 2

我会这样做

[
  true && 'one',
  false && 'two',
  1 === 1 && 'three',
  1 + 1 === 9 && 'four'
].filter(Boolean) // ['one', 'three']

请注意,这还将删除虚假值,例如空字符串。