1.es6中的set去重
語法new Set(要去重的數(shù)組)我纪,返回一個數(shù)組
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(要去重的數(shù)組),返回一個數(shù)組
注:此方法有一個缺陷不能去掉多余的對象
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去重
該方法重新申明了一個數(shù)組array蹲盘,for循環(huán)原數(shù)組祭陷,每次循環(huán)時判斷array中是否包含該次循環(huán)的元素苍凛,如果不包含就將這個元素添加到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
先調(diào)用sort方法排好序悠栓,在依次比較相鄰兩個元素是否相同,不同就push到新數(shù)組里面去
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有一個缺點蘸鲸,無法判斷數(shù)組中的NaN技潘。
聲明一個數(shù)組,循環(huán)原數(shù)組携栋,當這個數(shù)組里面里面不包含原數(shù)組里面的數(shù)據(jù)時,將當前循環(huán)到的數(shù)據(jù)蛀蜜,push到聲明的數(shù)組里去刻两。
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結(jié)合
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));
————————————————
版權(quán)聲明:本文為CSDN博主「YOYOyxl」的原創(chuàng)文章滴某,遵循CC 4.0 BY-SA版權(quán)協(xié)議,轉(zhuǎn)載請附上原文出處鏈接及本聲明滋迈。
原文鏈接:https://blog.csdn.net/YOYOyxl/article/details/106990271