无法读取 JavaScript 数组对象的未定义的属性'includes'



这是我的代码:

var nestedArr = [[1, 2, 3], [5, 2, 1, 4]];
var result;
  for (var a = 0; a < nestedArr.length; a++) { // iterate nestedArr
    for (var b = 0; b < nestedArr[a].length; b++) {
      if (nestedArr[a+1].includes(nestedArr[a][b])) {
        result.push(nestedArr[a][b]);
    }
  }
}

输出:Error: Cannot read property 'includes' of undefined。但是至少我可以确保几件事:1. includes()在JavaScript中存在数组的方法2.在控制台中运行单个语句nestedArr[a+1];给我数组[5, 2, 1, 4]

所以,我真的不明白Error吗?请帮助我弄清楚这一点。谢谢。

var nestedArr = [[1, 2, 3], [5, 2, 1, 4]];
var result = [];
  for (var a = 0; a < nestedArr.length; a++) { // iterate nestedArr
    for (var b = 0; b < nestedArr[a].length; b++) {
      if (nestedArr[a].includes(nestedArr[a][b])) {
        result.push(nestedArr[a][b]);
    }
  }
}
console.log(result)

删除加人完成了工作,基本上您试图访问数组不存在阵列

该程序将搜索不存在的索引。

var nestedArr = [[1, 2, 3], [5, 2, 1, 4]];
  ...
    ...
      if (nestedArr[a+1].includes(nestedArr[a][b])) {
      // As nestedArr.length will return 2, the program will eventually  search for nestedArr[2+1 (=3)] which doesn't exist.
    }
  }
}

奖金:为什么不使用for var i in nestedArr而不是使用.length

看这个答案。

as @nina Scholz评论

最后一个索引加一个不存在

您不需要检查Inclage!只需循环并使用filtermap作为例如!!!

var nestedArr = [[1, 2, 3], [5, 2, 1, 4]];
    var result = [];
    nestedArr.filter( (val) => {
      val.map( (v) => { result.push(v); } )
    })
    console.log(result);

最新更新