You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何修复筛选不含指定元素嵌套数组的JavaScript代码报错

原代码错误点

  1. 内层循环的迭代变量增量错误,写的是i++,应该是j++,这个错误会导致内层循环陷入死循环,因为j永远不会增加,永远满足循环判断条件。
  2. 判断逻辑不符合需求:当前逻辑是只要子数组内有一个元素不等于目标元素,就把整个子数组推入结果数组,而且会随着内层循环的遍历重复推入同一个子数组多次。我们需要的是子数组内完全不存在目标元素时,才推入一次子数组。

修复后的双重循环版本(兼容原有写法逻辑)

function filteredArray(arr, elem) {
  let newArr = [];
  for (let i = 0; i < arr.length; i++) {
    // 标记当前子数组是否包含目标元素
    let hasElem = false;
    for (let j = 0; j < arr[i].length; j++) {
      if (arr[i][j] === elem) {
        hasElem = true;
        // 找到目标元素后直接跳出内层循环,无需继续遍历
        break;
      }
    }
    // 仅当子数组完全不包含目标元素时才推入结果
    if (!hasElem) {
      newArr.push(arr[i]);
    }
  }
  return newArr;
}

// 测试用例所有子数组都包含3,所以输出空数组
console.log(filteredArray([
  [3, 2, 3],
  [1, 6, 3],
  [3, 13, 26],
  [19, 3, 9]
], 3)); // 输出 []

更简洁的内置方法实现版本

function filteredArray(arr, elem) {
  // 直接过滤出所有不包含目标元素的子数组
  return arr.filter(subArr => !subArr.includes(elem));
}

内容的提问来源于stack exchange,提问作者Mohammad Abdul Fahad

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.02 20:18:05