对于基元,使用
.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 memoryconst 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);


