嗨,社区我很难理解以下行为。这是典型的周一问题。我只想用整数0填充空的数组槽。
myArray = [
[1, ,1, ],
[ , ,1, ],
[ , ,1, ],
[1, , , ],
]
for (var a = 0; a < myArray.length; a++) {
for (var b = 0; b < myArray[a].length; b++) {
if (myArray[a][b] == undefined) {
myArray[a][b] = 0
}
}
console.log("myArray[" + a + "]["+ b +"]" + " = " + myArray[a][b])
}
您正试图在循环之外访问b
只需将其移动到循环
myArray = [
[1, , 1, ],
[, , 1, ],
[, , 1, ],
[1, , , ],
]
for (var a = 0; a < myArray.length; a++) {
for (var b = 0; b < myArray[a].length; b++) {
if (myArray[a][b] == undefined) {
myArray[a][b] = 0
}
console.log("myArray[" + a + "][" + b + "]" + " = " + myArray[a][b])
}
}
此外,最好不要使用var
:
myArray = [
[1, , 1, ],
[, , 1, ],
[, , 1, ],
[1, , , ],
]
for (let a = 0; a < myArray.length; a++) {
for (let b = 0; b < myArray[a].length; b++) {
if (myArray[a][b] == undefined) {
myArray[a][b] = 0
}
}
console.log("myArray[" + a + "][" + b + "]" + " = " + myArray[a][b])
}
如果你要使用let
,你会在没有调试的情况下得到一个错误
用zerro 填充空值的另一种方法
const myArray = [
[1, ,1, ],
[ , ,1, ],
[ , ,1, ],
[1, , , ],
];
const filled = myArray.map(level1 => [...level1].map(value => value ? value : 0));
console.log(filled);
.as-console-wrapper { max-height: 100% !important; top: 0 }
OP代码在外循环中记录值,该值超出了在内循环中定义的b
的范围。在定义属性之后立即记录属性,在您的情况下,这应该是内部循环。
const arrArrs = [
[ 1, '', 1, '' ],
[ '', '', 1, '' ],
[ '', '', 1, '' ],
[ 1, '', '', '' ]
];
for (let a = 0; a < arrArrs.length; a++) {
for (let b = 0; b < arrArrs[a].length; b++) {
if (arrArrs[a][b] != '') {
console.log(`arrArrs[${a}][${b}] = ${arrArrs[a][b]}`);
continue;
}
arrArrs[a][b] = 0;
console.log(`arrArrs[${a}][${b}] = ${arrArrs[a][b]}`);
}
}
console.log(JSON.stringify(arrArrs));