js

数组去重

2020-05-19  本文已影响0人  马甲要掉了

输入两个数组

  1. 双层for循环
function distinct(a,b){
    let arr = a.concat(b);
    for(let i=0,len=arr.length;i<len;i++){
        for(let j=i+1;j<len;j++){
            if(arr[i]==arr[j]){
                arr.splice(j,1);
                len--;
                j--;
            }
        }
    }
    return arr;
}
  1. for...of + includes
function distinct(a,b){
    let arr = a.concat(b);
    let newarr=[];
    for(let value of arr){
        !newarr.includes(value) && newarr.push(value);
    }
    return newarr;
}
distinct([6,2,4],[2,4,6])  // [6,2,4]

for...of 中遍历的是value值
for..in中遍历的是key值

  1. arr.sort()
function distinct(a,b){
    let arr = a.concat(b);
    arr.sort();
    let newarr = [arr[0]];
    for(let i=1;i<arr.length;i++){
        arr[i]!=arr[i-1] && newarr.push(arr[i])
    }
    return newarr;
} 
distinct([6,2,4],[2,4,6])  // [2,4,6]
  1. Array.from(new Set())
function distinct(a,b){
    let arr = a.concat(b);
    return Array.from(new Set(arr));
} 
distinct([6,2,4],[2,4,6]) // [6,2,4]
  1. for..of + Object
function distinct(a,b){
    let arr = a.concat(b);
    let obj ={};
    let newarr = [];
    for(let value of arr){
        if(!obj[value]){
            obj[value] = 1;
            newarr.push(value);
        }
    }
    return newarr
} 
distinct([6,2,4],[2,4,6])  //  [6,2,4]

输入单个数组

  1. 双层for循环
let arr = [2,6,3,6,1]
function distinct(arr){
    let newarr = [];
    let j;
    let newlen;
    for(let i=0,len=arr.length;i<len;i++){
        for(j=0,newlen=newarr.length;j<newlen;j++){
            if(arr[i]==newarr[j]){
                break;
            }
        }
        if(j==newlen){
            newarr.push(arr[i]);
        }
    }
    return newarr;
}
console.log(distinct(arr)) // [2,6,1,4]
  1. for循环+indexOf()
let arr = [2,6,3,6,1]
function distinct(arr){
    let newarr = [];
    for(let i=0;i<arr.length;i++){
        if(newarr.indexOf(arr[i])==-1){
            newarr.push(arr[i]);
        }
    }
    return newarr;
}
console.log(distinct(arr));   // [2,6,3,1]
  1. arr.sort()
let arr = [2,6,3,6,1]
function distinct(arr){
    arr.sort();
    let newarr = [arr[0]];
    for(let i=1;i<arr.length-1;i++){
        newarr[i]!=newarr[i-1] && newarr.push(arr[i]);
    }
    return newarr;
}
console.log(distinct(arr));  // [1,2,3,6]
  1. for..of +Object
let arr = [2,6,3,6,1]
function distinct(arr){
    arr.sort();
    let newarr = [];
    let obj = {};
    for(let value of obj){
        if(!obj[value]){
            obj[value]=1;
            newarr.push(value);
        }
    }
    return newarr;
}
console.log(distinct(arr));  // [1,2,3,6]
上一篇 下一篇

猜你喜欢

热点阅读