一尘不染

如何将相同元素添加到javascript数组n次

javascript

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

而不是推送相同的元素,怎么可以这样写一次:

fruits.push("lemon" * 4 times)

阅读 635

收藏
2020-04-25

共1个答案

一尘不染

对于基元,使用.fill

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

console.log(fruits);

对于非基本fill元素,请不要使用,因为数组中的所有元素都将引用内存中的同一对象,因此对数组中一项的更改会影响数组中的每一项。

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));

相反,可以在每次迭代中显式创建对象,可以使用以下方法完成Array.from

var fruits = Array.from(

  { length: 4 },

  () => ({ Lemon: 'Lemon' })

);

console.log(fruits);

有关如何以这种方式创建2D数组的示例:

var fruits = Array.from(

  { length: 2 }, // outer array length

  () => Array.from(

    { length: 3 }, // inner array length

    () => ({ Lemon: 'Lemon' })

  )

);

console.log(fruits);
2020-04-25