如何实现数组去重?
假设有数组 array = [1,5,2,3,4,2,3,1,3,4]
你要写一个函数 unique,使得
unique(array) 的值为 [1,5,2,3,4]
也就是把重复的值都去掉,只保留不重复的值。
(1)不使用Set实现:
function unique(arr) {
let array2 = [];
for (let i = 0; i < arr.length; i++) {
if (array2.indexOf(arr[i])===-1) {
array2.push(arr[i]);
}
}
arr = array2;
return arr;
}
使用indexOf,要创建新的数组,浪费内存资源。
(2)使用Set实现:
let array = [1,5,2,3,4,2,3,1,3,4]
function unique(arr){
let setArray =new Set(arr);
return setArray
}
(3)使用Map去重:
function unique(arr) {
let mapArray = new Map();
arr.forEach((e, i) => mapArray.set(e, i))
let array2 = [];
mapArray.forEach((key, value) => { array2.push(value) });
arr = array2;
console.log(arr);
}
unique(array);