【发布时间】:2022-01-18 06:54:21
【问题描述】:
这是我的代码:
let rowValues = [];
let gridValues = [];
let testArray = [[1,1,1],[0,0,0],[1,1,1],[0,0,0],[1,1,1]];
let rows = 5;
let cols = 3;
for (let i = 0; i < rows; i++) {
rowValues.length = [];
for (let j = 0; j < cols; j++) {
if (testArray[i][j] === 0) {
rowValues.push(0);
} else if (testArray[i][j] === 1) {
rowValues.push(1);
}
}
gridValues.push(rowValues);
}
问题在于 gridValues 数组在第一个 for 循环的第一次迭代后(一旦 i = 1)更新为 rowValues 数组。就好像它们变得联系在一起,当你更新一个时,另一个也会效仿。这是怎么回事??
我只想构建 rowValues 数组,然后将其推入 gridValues 数组以构建二维数组。但是当在下一次迭代开始时清除 rowValues 时,gridValues 也会被清除。
【问题讨论】:
-
因为您将对 rowValues 的引用推送到 gridValues 中。最简单的解决方法是将 rowValues 的内容传播到 gridValues 中,而不是将 rowValues 的引用推送到 gridValues 中。
gridValues.push([...rowValues])
标签: javascript arrays for-loop nested-loops