无法读取属性';包括';JavaScript数组对象的未定义值

无法读取属性';包括';JavaScript数组对象的未定义值,javascript,arrays,Javascript,Arrays,这是我的代码: 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])) {

这是我的代码:

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]);
    }
  }
}
var nestedArr=[[1,2,3],[5,2,1,4];
var结果;
对于(var a=0;a
输出:
错误:无法读取未定义的属性“includes”
。但至少我可以确定几件事: 1. <代码>包含()
方法存在于JavaScript中的数组中 2.运行一条语句
nestedArr[a+1]在控制台中给我数组
[5,2,1,4]


所以,我真的不理解
错误
?请帮我弄清楚这件事。谢谢。

程序将搜索不存在的索引

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.
    }
  }
}
奖金:为什么不在nestedArr中为var i使用
而不是使用
.length


程序将搜索不存在的索引

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.
    }
  }
}
奖金:为什么不在nestedArr中为var i使用
而不是使用
.length

var nestedArr=[[1,2,3],[5,2,1,4];
var结果=[];
对于(var a=0;a
删除加号完成了任务,基本上您尝试访问一个数组,但没有数组存在

var nestedArr=[[1,2,3],[5,2,1,4];
var结果=[];
对于(var a=0;a

删除加号1就可以了,基本上你试图访问一个数组,但是没有数组出现。

正如@Nina Scholz评论的那样


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

您不需要通过包含项进行检查!只需使用
filter
map
作为示例执行循环和分配

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

控制台日志(结果)如@Nina Scholz所评论


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

您不需要通过包含项进行检查!只需使用
filter
map
作为示例执行循环和分配

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

控制台日志(结果)上一个索引加上一个不存在。此代码打算实现什么?上一个索引加上一个不存在。此代码打算实现什么?