陣列去重!
阿新 • • 發佈:2021-07-15
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) },[]) }