1.indexOf 

function unique(arrs){
    let arrNew = [];
    for(let i=0;i<arrs.length;i++){
        if( arrNew.indexOf(arrs[i])==-1){
            arrNew.push(arrs[i])
        }
    }
    return arrNew
}

 

2.优化遍历数组法 (双重循环)

function unique(arrs){
  let arrNew = [];
  for(let i=0;i<arrs.length;i++){
    for(let j=i+1;j<arrs.length;j++){
      if( arrs[i] == arrs[j]){
        ++i;
      }
    }
    arrNew.push(arrs[i])
  }
  return arrNew
}

 

3.对象属性去重

function unique(arrs){
    let newArr = [],
        newObj = {};
    for(let i=0;i<arrs.length;i++){
        if(!newObj[arrs[i]]){
            newArr.push(arrs[i])
            newObj[arr[i]] = 1;
        }
    }
    return newArr
}

 

4.es6 Set方法 (set数据结构其成员是唯一的)

array.from
function unique(arrs){ return Array.from(new Set(arrs)) } 扩展运算符 function unique(arrs){ return ...new Set(arrs) }

 

 5.Map && filter()

function unique(arrs){
    let res = new Map();
    return arrs.filter(item => !res.has(item)&&res.set(item,1)) 
}

 

6.reduce()

function unique(arrs){
    let newArr = [];
    newArr = arrs.reduce((accumulator,current)=>{
        console.log(accumulator)
        return accumulator.includes(current)?accumulator:accumulator.concat(current)
    },[])
}