How to conditionally add or remove element inside an array

Viewed 1374

I don't want second element null in else condition .. i just don't want second element. How to solve this issue?

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

3 Answers

There something called conditional spread operator and it's perfect for your issue

When condition is false you spread empty array so literally nothing is added to array you declare

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)

I like the spread operator in the other example

For compatibility, just use an 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)

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

You can spread a ternary condition inside the array, with an empty array as a falsy case.

Related