*介绍下通常 下 使用最多数组去重三种做法
1.indexOf 判断一波
function noRepeat(arr) {
var arr2 = [];
for(var i = 0; i < arr.length; i++) {
// 如果arr[i]不存在arr2中,把元素添加到arr2中
if(arr2.indexOf(arr[i]) == -1) {
-- 或者 if(arr.indexOf(arr[i]) == i) {也一样可以--
arr2.push(arr[i]);
}
}
return arr2;
}
var arr = [1,2,32,1,1,2,3,4,5]
arr = noRepeat(arr);
console.log(arr);
var arrNum = [1,'a', 'a', 'a',2,2,3,3,3,3,3,4,4];
2.利用对象的属性去重(推荐)
使用这种方法,占用内存更少
思路:每次取出原数组的元素,然后再对象中访问这个属性,如果存在就说明重复,
function unique(arr){
var res =[];
var json = {};
for(var i=0;i<arr.length;i++){
//对象中不存在这个属性,输出值为undefined,布尔值为false
if(!json[arr[i]]){
res.push(arr[i]);
json[arr[i]] = 1;
}
}
return res;
}
3.Es6方法
var arr=[1,5,8,8,8,5,2,1,1,5]
var np=new Set(arr)
//扩展运算符 去除外壳
var arr2=[...np]
网友评论