for循环:javaScript中的嵌套数组



我的代码:

let newArr = [[1,5,6,4],[8,5,4],[4,4,4,4]];
function filterArr(arr, elemn){
for(let i = 0; i < arr.length; i++){
for(let j=0; j < arr[i].length; j++){
if(arr[i][j] === elemn){
arr[i].splice(j,1);
}
}
}
return arr;
}
console.log(filterArr(newArr,4));

结果:[[1、5、6],[8,5],[4 4]]

我被困在这一点:[4,4] it supposed []

有什么建议吗?

我将引用一些来自https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/splice

的句子

deleteCount可选
整数,表示数组中要从start开始删除的元素个数。

如果省略deleteCount,或者其值等于或大于array。Length - start(即,如果它等于或大于数组中剩余的元素数,从start开始),则从数组开头到末尾的所有元素将被删除。

如果deleteCount为0或负值,则不删除任何元素。在这种情况下,您应该至少指定一个新元素(见下文)。

删除j的第1个元素和j++,以便删除后跳过下一个被删除的元素。一次删除后,应使用j--

正确的完整代码如下:

let newArr = [[1,5,6,4],[8,5,4],[4,4,4,4]];
function filterArr(arr, elemn){
for(let i = 0; i < arr.length; i++){
for(let j=0; j < arr[i].length; j++){
if(arr[i][j] === elemn){
arr[i].splice(j, 1);
j --;
}
}
}
return arr;
}
console.log(filterArr(newArr,4));

Global newArray.

let newArr = [[1,5,6,4],[8,5,4],[4,4,4,4]];

下面是filterArr函数,参数相同

let result = [];
for (let item of newArr){
for (let i = 0; i< item.length; i++){
if (item[i] == elemn){
item.splice(i, 1);
i--;
}
}
result.push(item);
}
return result;

您可以调用filterArr函数并显示与您期望的相同的结果。

console.log(filterArr(newArr,4));

正如评论中提到的,您可以查看javascriptArray类。有一个内置的filter方法可以简化这一点。

let newArr = [[1,5,6,4],[8,5,4],[4,4,4,4]];
function filterArray(arr, valueToFilter) {
return arr.map( (subArray) => subArray.filter( (value) => value !== valueToFilter ) );
}
console.log(filterArray(newArr,4));

最新更新