Это происходит потому, что когда вы вызываете array.fill()
, вы передаете ему только одно значение new Array()
. То есть, чтобы заполнить массив одним значением.
Если вы хотите взять существующий массив и назначить новый экземпляр для каждого индекса, вы можете использовать .map()
.
var matrix = new Array(10).fill().map(function(item, index, arr) {
return new Array(10);
});
Чтобы сделать это вложенным способом, вы, похоже, хотите, чтобы вы могли отображать дважды.
// the callback function's item, index and array properties are optional
var matrix = new Array(10).fill().map(function(item, index, arr) {
return new Array(10).fill(0);
});
Если вы используете ES6, это может быть дополнительно упрощено до однострочного.
var matrix = new Array(10).fill().map(() => new Array(10).fill(0));
Причина .map()
заключается в том, что она вызывает предоставленную функцию обратного вызова для каждого элемента в массиве.
Причина для пробела .fill()
перед .map()
заполнить массив значениями. По умолчанию новый массив, которому был задан размер, имеет undefined
для каждого элемента. .fill()
временно заполнит массив, чтобы он мог отображаться.