gpt4 book ai didi

javascript - 为什么在我的 JS 嵌套数组中得到 "arr[i] is undefined"?

转载 作者:行者123 更新时间:2023-11-29 10:02:08 24 4
gpt4 key购买 nike

我不明白为什么这不起作用。我知道问题来自条件 if(arr[i][j]===elem) 的第 8 行。

function filteredArray(arr, elem) {
let newArr = [];

for (let i = 0; i < arr.length; i++) {

for(let j = 0; j < arr[i].length; j++) {

if(arr[i][j]===elem) {

newArr.push(arr.splice(i,1));

}
}
}
return newArr;
}

如果我在控制台中输入如下测试:

console.log(filteredArray([[3, 2, 3], [1, 6, 3], [3, 13, 26], [19, 3, 9]], 3));

我得到错误 arr[i] is undefined

最佳答案

您的问题是您正在修改循环内数组的长度。你的循环内部有 arr.splice(i,1);每次调用时,您的数组都会缩短 1。最终,您的数组变得太短,并且您试图越界读取一个项目。您可以通过在 if block 中注释掉该行来证明这一点;您的代码将无错误地运行。

我不确定您要在 newArr 中放入什么值,但是没有理由修改 arr 来获取您的值。只需从 arr 中读取你想要的值,然后将其推送到 newArr,你就没有问题了。


顺便说一句,与使用原生数组方法(如 arr.filter())相比,您是否有任何理由必须使用 for 循环? ?

关于javascript - 为什么在我的 JS 嵌套数组中得到 "arr[i] is undefined"?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53892176/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com