如何有条件地添加或删除数组内的元素

Soo*_*ala 2 javascript conditional-operator ecmascript-6

我不希望在 else 条件下第二个元素为 null .. 我只是不想要第二个元素。如何解决这个问题?

var template = "";
var myArray = [
  { element : "header" },
  template === 'foo' ? { element : "sidebar" } : null,
  { element : "footer" }
]
console.log(myArray)
Run Code Online (Sandbox Code Playgroud)

Mar*_*ski 6

有一种叫做条件传播运算符的东西,它非常适合您的问题

当条件为假时,您会传播空数组,因此您声明的数组实际上没有添加任何内容

const template1=""
const myArray1 = [
  { element : "header" },
  ...( template1 === 'foo' ? [{ element : "sidebar" }] : [] ),
  { element : "footer" }
]

console.log(myArray1)

const template2="foo"
const myArray2 = [
  { element : "header" },
  ...( template2 === 'foo' ? [{ element : "sidebar" }] : [] ),
  { element : "footer" }
]

console.log(myArray2)
Run Code Online (Sandbox Code Playgroud)

  • 更新了一个例子 (2认同)
  • 一些喜欢过度优化一切的人可以传播一个空字符串而不是一个空数组 (`...( template1 === 'foo' ? [{ element : "sidebar" }] : '' ),`),避免创建额外的未使用的对象(但我不知道它会节省多少毫秒或字节的内存)... +1 (2认同)