方法一: indexOf()方法
var newarr = [];
for (var i = 0; i < arr.length; i++){
if (arr1.indexOf(arr[i]) == -1) {
arr1.push(arr[i])
}
}
//换一个遍历方式 同理用indexOf对比下标
arr.filter(function(item, index, arr) {
//当前元素,在原始数组中的第一个索引==当前索引值,否则返回当前元素
return arr.indexOf(item, 0) === index;
})
方法二:两层循环+splice
for (var i = 0; i < arr.length; i++) {
for (var j = i + 1; j < arr.length; j++) {
if (arr[i] == arr[j]) {
arr.splice(j, 1)
j--;
}
}
}
方法三:set(ES6)
去的是全等的数据,1和‘1’ 不重复
Array.from(new Set(arr))
方法四:includes (ES6)
用法和indexof差不多
var array =[];
for(var i = 0; i < arr.length; i++) {
if( !array.includes(arr[i]) ) {//includes 检测数组是否有某个值
array.push(arr[i]);
}
}
PS:
- 1、用对象属性不能相同的特点来去重的,感觉这样不太好就不写了
- 2、用filter去重个人感觉不算是一种方法,用filter还是遍历,里面还得用indexOf比较下标
- THE END -
最后修改:2024年6月24日
非特殊说明,本博所有文章均为博主原创。
如若转载,请注明出处:https://mi-blog.cn/index.php/2020/01/15/js%e5%8e%bb%e9%87%8d/