关于数组去重的几种方案:
1.利用Array.indexOf()的方法,判断新数值里是否已经包含了原数组的元素,包含了就不放入新数组,未包含则将元素加入新数组。
function fun1(arr){
var newArr = [];
for(var i = 0;i<arr.length;i++){
if(newArr.indexOf(arr[i]) == -1){
newArr.push(arr[i]);
}
}
return newArr;
}
2.利用对象的属性不能重复定义去重重复的元素
function fun2(arr){
var obj = {};
var newArr = [];
for(var i = 0;i<arr.length;i++){
if(!obj[arr[i]]){
newArr.push(arr[i]);
obj[arr[i]] = 1;
}
}
return newArr;
}
3.先对数组进行排序后,对数组相邻两位进行比较,相等则不push到新数组(此方法更改了原数组)
function fun3(arr){
var newArr = [];
arr.sort(function(a, b){
return a - b;
})
newArr.push(arr[0]);
for(var i = 0;i<arr.length;i++){
if(arr[i] != newArr[newArr.length - 1]){
newArr.push(arr[i]);
}
}
return newArr;
}
4.利用ES6的新增Set对象,Set会保留任何数据类型的唯一值,并返回一个伪数组
function fun4(arr){
var newArr = new Set(arr);
return Array.from(newArr);
}
网友评论