首页 > 解决方案 > 代码给出无法找到未定义长度的错误

问题描述

代码给出的错误是:

无法读取 arr[i].length 中未定义的属性长度

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) {
        arr[i].splice(j, 1);
        
      }
    }
  }
  return arr;
}

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

标签: javascriptarrays

解决方案


发生这种情况是因为您splice在迭代数组时减少了它的长度,导致您越界访问数组,因为第一个for循环一直循环到arr.length - 1. 我想你想用它slice来获取你想要的数组部分。


推荐阅读