gpt4 book ai didi

javascript - 循环嵌套数组

转载 作者:行者123 更新时间:2023-11-30 11:06:30 24 4
gpt4 key购买 nike

我正在做一个练习,要求我删除包含与另一个变量匹配的元素的数组。

例如

filteredArray([[10, 8, 3], [14, 6, 23], [3, 18, 6]], 18)

应该返回 [[10, 8, 3], [14, 6, 23]]

考虑到我们正在使用嵌套数组这一事实,我考虑使用双 for 循环进入每个元素。

像这样:

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[i]);
}
}
// change code above this line
return newArr;
}
}

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

预期的结果是有一个空数组,但它给了我:[3, 2, 3]

正确的解决方法如下:

function filteredArray(arr, elem) {
let newArr = [];
for (let i = 0; i < arr.length; i++) {
if (arr[i].indexOf(elem) == -1) { //Checks every parameter for the element and if is NOT there continues the code
newArr.push(arr[i]); //Inserts the element of the array in the new filtered array
};
};
return newArr;
};

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

这很有道理,但我不明白为什么我的错误。

最佳答案

您的问题在于:

if (arr[i][j] != elem) {
newArr.push(arr[i]);
}

每次内部元素 (newArr[i][j]) 不等于过滤器元素 (元素)。相反,如果 arr[i] 中的所有项目都不等于 elem,则您想将其推送到 newArr 中。您可以通过几种方式做到这一点,一种方式是使用变量 found 作为标志,指示是否在任何内部列表中找到 elem,并且如果找不到则添加它:

function filteredArray(arr, elem) {
let newArr = [];
for (let i = 0; i < arr.length; i++) {
let found = false;
for (let j = 0; j < arr[i].length; j++) {
if (arr[i][j] == elem) {
found = true;
}
}

if(!found) {
newArr.push(arr[i]);
}
}

// move return out of for loop
return newArr; // change code above this line

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

关于javascript - 循环嵌套数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55415051/

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