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)
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);
new Array nor Array.from are exceptions. new Array is fine as long as you fill the array afterwards.Array.fill is better in performance compared to for loopYou 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
L, the others have lowercasel.