【问题标题】:for loop: Nested array in javaScriptfor 循环:javascript 中的嵌套数组
【发布时间】:2021-10-23 10:08:37
【问题描述】:

我的代码:

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] 它应该是 []

任何建议请...

【问题讨论】:

标签: javascript arrays loops nested splice


【解决方案1】:

如 cmets 中所述,您可以查看 javascript Array class。有一个内置的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));

【讨论】:

  • 你是对的.. 但我想要 for 循环?
【解决方案2】:

全局新数组。

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));

【讨论】:

    【解决方案3】:

    我会引用https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/splice的一些句子

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

    如果deleteCount被省略,或者它的值等于或大于array.length - start(即,如果它等于或大于数组中剩余的元素个数, 从 start 开始),那么数组从 start 到 end 的所有元素都会被删除。

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

    您删除jth 元素和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));

    【讨论】:

    • 在添加j之前--有问题..现在可以了
    • @AbdulhameedSabur,是的,我第一次写,我没有更深入地阅读你的问题
    • 你太棒了
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-03-25
    • 2015-01-04
    • 1970-01-01
    • 1970-01-01
    • 2022-07-06
    • 1970-01-01
    • 2018-05-05
    相关资源
    最近更新 更多