var fruits = [];
fruits.push(\"lemon\", \"lemon\", \"lemon\", \"lemon\");
Instead of pushing same elements how can write it once like this:
<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);
Try using Array constructor:
let myArray = Array(times).fill(elemnt)
See more here Array
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