1.es6中的set去重
语法new Set(要去重的数组),返回一个数组
eg:
var arr1= [1,3,4,1,4,5,7,{},{},NaN,true,null,true,‘hahah’,‘kk’,‘hahah’,NaN,null]
var arr2 = new Set(arr1);
console.log(arr1);
console.log(arr2);
// 语法new Set(要去重的数组),返回一个数组
注:此方法有一个缺陷不能去掉多余的对象
2,slice去重
var arr1 = [1,1,3,4,2,4,3,2,5,7,3]
for(var i=0;i<arr1.length;i++){
for(var j=i+1;j<arr1.length;j++){
if(arr1[j]==arr1[i]){
arr1.splice(j,1)
}
}
}
console.log(arr1);
3.indexOf去重
该方法重新申明了一个数组array,for循环原数组,每次循环时判断array中是否包含该次循环的元素,如果不包含就将这个元素添加到array中去。
function unique(arr) {
var array = [];
for(var i=0;i<arr.length;i++){
if(array.indexOf(arr[i])==-1){
array.push(arr[i])
}
}
return array;
}
var arr= [1,1,3,4,2,4,3,2,5,7,3]
console.log(unique(arr));
4.sort
先调用sort方法排好序,在依次比较相邻两个元素是否相同,不同就push到新数组里面去
function unique(arr) {
arr = arr.sort()
var array = [arr[0]];
for(var i=1;i<arr.length;i++){
if(arr[i]!==array[i-1]){
array.push(arr[i])
}
}
return array;
}
var arr = [1,1,3,4,2,4,3,2,5,7,3]
console.log(arr.length);
console.log(unique(arr));
5.利用对象的属性不能重复去重
function unique(arr) {
var obj = {};
var array = [];
for(var i=0;i<arr.length;i++){
if(!obj[arr[i]]){
array.push(arr[i])
obj[arr[i]] = 1;
console.log(‘1’,obj);
}else{
obj[arr[i]]++
console.log(‘2’,obj);
}
}
return array;
}
var arr= [1,1,3,4,2,4,3,2,5,7,3]
console.log(unique(arr));
6.includes去重
includes方法和indexof方法用法差不多,但是indexOf有一个缺点,无法判断数组中的NaN。
声明一个数组,循环原数组,当这个数组里面里面不包含原数组里面的数据时,将当前循环到的数据,push到声明的数组里去。
function unique(arr) {
var array = [];
for(var i=0;i<arr.length;i++){
if(!array.includes(arr[i])){
array.push(arr[i])
}
}
return array;
}
var arr= [1,1,3,4,2,4,3,2,5,7,3]
console.log(unique(arr));
7.利用hasOwnProperty 判断是否存在对象属性与filter结合
function unique(arr) {
var obj = {};
return arr.filter(function (item) {
console.log(typeof item + item);
return obj.hasOwnProperty(typeof item+item)?false:(obj[typeof item+item]=true)
})
}
var arr= [1,1,3,4,2,4,3,2,5,7,3]
console.log(unique(arr));
8.利用filter
function unique(arr) {
return arr.filter(function (item,index) {
console.log(arr.indexOf(item,0));
//找到item,返回当前下标
return arr.indexOf(item,0) === index
})
}
var arr= [1,1,3,4,2,4,3,2,5,7,3]
console.log(unique(arr));
————————————————
版权声明:本文为CSDN博主「YOYOyxl」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/YOYOyxl/article/details/106990271