Как условно добавить или удалить элемент внутри массива - PullRequest
3 голосов
/ 31 марта 2020

Я не хочу, чтобы второй элемент был пустым в другом состоянии. Я просто не хочу второй элемент. Как решить эту проблему?

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

Ответы [ 3 ]

5 голосов
/ 31 марта 2020

Там есть так называемый оператор условного спреда, и он идеально подходит для вашей проблемы.

Когда условие ложно, вы распространяете пустой массив, так что буквально ничего не добавляется в массив, который вы объявляете

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)
1 голос
/ 31 марта 2020

Мне нравится оператор распространения в другом примере

Для совместимости просто используйте if:

var template1 = "foo";
var myArray1 = [
  { element : "header" },
  { element : "footer" }
]
if (template1 === 'foo') myArray1.splice(1,0,{ element : "sidebar" })
console.log(myArray1)


var template2 = "";
var myArray2 = [
  { element : "header" },
  { element : "footer" }
]
if (template2 === 'foo') myArray2.splice(1,0,{ element : "sidebar" })
console.log(myArray2)
0 голосов
/ 31 марта 2020

const template = '';
const myArray = [
  { element : "header" },
  { element : "footer" },
  ...(template === 'foo' ? [{ element : "sidebar" }] : [])
]
console.log(myArray)

Вы можете распространить троичное условие внутри массива с пустым массивом в качестве ложного случая.

...