Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to conditionally add or remove element inside an array

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)
like image 333
Sooraj Bala Avatar asked Sep 12 '25 22:09

Sooraj Bala


2 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)
like image 184
Marek Szkudelski Avatar answered Sep 14 '25 10:09

Marek Szkudelski


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)
like image 25
mplungjan Avatar answered Sep 14 '25 11:09

mplungjan