程序的目的是arr[i][1](也就是字符串)去重,并把去重后的结果插入result内,并返回,我的代码如下:
var arr = [ [ 88, 'Bowling Ball' ],
[ 2, 'Dirty Sock' ],
[ 3, 'Hair Pin' ],
[ 12, 'Toothpaste' ],
[ 2, 'Hair Pin' ],
[ 3, 'Half-Eaten Apple' ],
[ 7, 'Toothpaste' ],
[ 2, 'Hair Pin' ],
[ 3, 'Half-Eaten Apple' ],
[ 67, 'Bowling Ball' ],
[ 7, 'Toothpaste' ],
[ 3, 'Half-Eaten Apple' ],
[ 67, 'Bowling Ball' ],
[ 7, 'Toothpaste' ],
[ 2, 'Hair Pin' ],
[ 3, 'Half-Eaten Apple' ],
[ 67, 'Bowling Ball' ] ];
var result = [[0,'test']];
arr.forEach(function(e,i){
if(!result[i].includes(e[1])){
result.push(e);
}
});
console.log(result);
可是在调试的时候,系统给我的反馈是:TypeError: Cannot read property 'includes' of undefined
我不是很明白,因为result[i]也应该是一个数组才对啊,怎么会出现这种情况呢?
求大神解答,谢谢。
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号
result[0] 是数组,请问 result[1]是什么?
大哥,你这result在位置0后边都是
undefined了,当然TypeError: Cannot read property 'includes' of undefined字符串去重来了。。
-------------------------------分割线----------------------------------
眼睛一花,看成序号去重。。将错就错的代码(序号去重)如下
两个内容相同但对象不是同一个的数组不能用
===比较判等,所以includes()没法判断它们的相等性。可以用every()或some()来逐个判断如果不要求按原顺序,可以先排序再判断,更快一些
两段代码的结果: