缺少值-填充空的数组槽



嗨,社区我很难理解以下行为。这是典型的周一问题。我只想用整数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));

最新更新