1、雙層迴圈去重
先定義原始陣列第乙個元素的陣列,遍歷原始陣列,新陣列與原始陣列進行比較
如果不重複就新增到新陣列中,最後返回新陣列res
let arr = [0,2,3,4,4,0,2];function
unique1(ary)
}if(flag)res.push(arr[i]);
}return
res;
}console.log(unique1(arr));
//[0, 2, 3, 4]
2、使用indexof方法去重
indexof()方法可返回某個指定的元素在陣列中首次出現的位置
首先定義乙個空陣列res,然後呼叫indexof方法對原來的陣列進行遍歷判斷,
如果元素不在res中,則將其push進res中,最後將res返回即可獲得去重的陣列
let bosh = [1,2,3,3,2,1,1,2,3,4,5,6,7];function
unique2(a)
}return
temp;
}console.log(unique2(bosh));
//[1, 2, 3, 4, 5, 6, 7]
3、相鄰元素去重(排序後去重)
首先呼叫了陣列的排序方法sort(),然後根據排序後的結果進行遍歷及相鄰元素對比
如果相等則跳過改元素,直到遍歷結束
let adjoin = [64,5,4,2,4,5,2];function
unique3(arr)
}return
empt;
}console.log(unique3(adjoin));
//[2, 4, 5, 64]
4、利用物件屬性去重
建立空物件,遍歷陣列,將陣列中的值設為物件的屬性,並給該屬性賦初始值1,每出現一次,對應的屬性值增加1
這樣,屬性值對應的就是該元素出現的次數
let sz = [6,20,0,20,9,6,0];function
unique4(arr);
for(let i=0;i)
else
}return
item;
}console.log(unique4(sz)); //
[6, 20, 0, 9]
5、利用indexof + filter
利用indexof檢測元素在陣列中第一次出現的位置是否和元素現在的位置相等,如果不等則說明該元素是重複元素,然後把重複的元素過濾掉
let filt = [0,99,33,22,0,44,33];function
unique5(arr));
}console.log(unique5(filt));
//[0, 99, 33, 22, 44]
6、使用es6中set與解構賦值去重
set的特性就是值是唯一的,不能重複
let es = [1,2,2,3,4,1,3,5];function
unique6(arr)
console.log(unique6(es));
//[1, 2, 3, 4, 5]
7、使用es6中set與array.from去重
array.from可以將類陣列轉為陣列
let array = [0,3,0,5,0,6,5];function
unique7(arr)
console.log(unique7(array));
//[0, 3, 5, 6]
陣列去重的幾種方法
實現思路 新建一新陣列,遍歷傳入陣列,值不在新陣列就加入該新陣列中 注意點 判斷值是否在陣列的方法 indexof 是ecmascript5 方法,ie8以下不支援,需多寫一些相容低版本瀏覽器 最簡單陣列去重法 function unique1 array return n 實現思路 新建一js物件...
陣列去重的幾種方法
記錄一些陣列去重的方法,如果有錯誤的地方,還望指正 1.利用es6中的set 去重特性 const arr 1,2,3,6,8,2,9,5,6,4,9 function uniq arr const resultarr1 uniq arr console.log resultarr1 2.利用inc...
陣列去重的幾種方法
function unique arr let arr 1,2,3,1,2,2,a b c c a 4 4,false,false,undefined,undefined,null,null nan,nan,console.log unique arr 1,2,3,a b c 4,false,und...