1. 程式人生 > 其它 >陣列去重!

陣列去重!

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)
    },[])
}