数组去重
1.双重for循环的方法(es5)
function unique(arr1) {
for (var i = 0, len = arr1.length; i < len; i++) {
for (var j = i + 1, len = arr1.length; j < len; j++) {
if (arr1[i] === arr1[j]) {
arr1.splice(j, 1);
j--;
len--;
}
}
}
return arr1;
}
2.利用sort() (es5)
function unique44(arr){
arr = arr.sort()
var arrry = [arr[0]];
for(var i=1;i<arr.length;i++){
if(arr[i] != arr[i-1]){
arrry.push(arr[i])
}
}
return arrry;
}
3.利用indexof去重 (es5)
function unique33(arr){
var newArr = []
for(var i=0,len=arr.length;i<len;i++){
//如何能查不到就插入到新数组
if(newArr.indexOf(arr[i]) === -1){
newArr.push(arr[i])
}
}
return newArr;
}
4.递归的方法去重(es5)
function unique77(arr){
var arr1 = arr;
var len = arr1.length;
arr1.sort((a,b)=>{
return a-b
})
function loop(index){
if(index>=1){
if(arr1[index] === arr1[index-1]){
arr1.splice(index,1)
}
loop(index-1)
}
}
loop(len-1);
return arr1
}
5.filter去重(es5)
function unique666(arr){
var obj ={};
return arr.filter(function(currentValue,index,arr){
return arr.indexOf(currentValue,0) === index;
})
}
6.Set(es6)
function unique2(arr){
return Array.from(new Set(arr))
}
// console.log(unique2(arrList));
function unique22(arr){
let appeard = new Set()
return arr.filter(item=>{
if(appeard.has(id)){
return false
}else{
appeard.add(id)
return true
}
})
}
7.Map(es6)
function unique88(arr){
let map = new Map();
console.log(map);
let arr1 = [];
for(let i = 0,len=arr.length;i<len;i++){
if(map.has(arr[i])){
map.set(arr[i],true)
}else{
map.set(arr[i],false)
arr1.push(arr[i]);
}
return arr1
}
}
8.includes 去重
function unique55(arr){
var newarr =[];
for(var i =0;i<arr.length;i++){
if(!newarr.includes(arr[i])){
//与indeOf类似,检测数组中是否有某个值
newarr.push(arr[i])
}
}
return newarr;
}
9.特殊方法
var newarr = [...new Set(arrList)]
console.log(newarr);
关注微信公众号前端凌影,一起学习吧!