Deke
Deke

Reputation: 4659

How to add same elements to javascript array n times

var fruits = [];
fruits.push("lemon", "lemon", "lemon", "lemon");

Instead of pushing same elements how can write it once like this:

fruits.push("lemon" * 4 times)

Upvotes: 23

Views: 13578

Answers (4)

Anna Vlasenko
Anna Vlasenko

Reputation: 996

   const item = 'lemon'
   const arr = Array.from({length: 10}, () => item)

const item = 'lemon'
const arr = Array.from({length: 10}, () => item)
console.log('arr', arr)

Upvotes: 1

CertainPerformance
CertainPerformance

Reputation: 371233

For primitives, use .fill:

var fruits = new Array(4).fill('Lemon');
console.log(fruits);

For non-primitives, don't use fill, because then all elements in the array will reference the same object in memory, so mutations to one item in the array will affect every item in the array.

const fruits = new Array(4).fill({ Lemon: 'Lemon' });

fruits[0].Apple = 'Apple';
console.log(JSON.stringify(fruits));


// The above doesn't work for the same reason that the below doesn't work:
// there's only a single object in memory

const obj = { Lemon: 'Lemon' };

const fruits2 = [];
fruits2.push(obj);
fruits2.push(obj);
fruits2.push(obj);
fruits2.push(obj);

fruits2[0].Apple = 'Apple';
console.log(JSON.stringify(fruits2));

Instead, explicitly create the object on each iteration, which can be done with Array.from:

var fruits = Array.from(
  { length: 4 },
  () => ({ Lemon: 'Lemon' })
);
console.log(fruits);

For an example of how to create a 2D array this way:

var fruits = Array.from(
  { length: 2 }, // outer array length
  () => Array.from(
    { length: 3 }, // inner array length
    () => ({ Lemon: 'Lemon' })
  )
);
console.log(fruits);

Upvotes: 44

Facundo Petre
Facundo Petre

Reputation: 451

Try using Array constructor:

let myArray = Array(times).fill(elemnt)

See more here Array

Upvotes: 3

Mystical
Mystical

Reputation: 2793

You shouldn't use the array constructor, use [] instead.

const myArray = [];   // declare array

myArray.length = 5; // set array size
myArray.fill('foo'); // fill array with any value

console.log(myArray); // log it to the console

Upvotes: 2

Related Questions