这是我的代码:
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!只需循环并使用filter
和map
作为例如!!!
var nestedArr = [[1, 2, 3], [5, 2, 1, 4]];
var result = [];
nestedArr.filter( (val) => {
val.map( (v) => { result.push(v); } )
})
console.log(result);