题目:
假设有数组 array = [1,5,2,3,4,2,3,1,3,4]
你要写一个函数 unique,使得
unique(array) 的值为 [1,5,2,3,4]
也就是把重复的值都去掉,只保留不重复的值。
ES6中可以使用Set去重
function unique (arr){
return [...new Set(arr)]
//也可以用 return Array.from(new Set(arr))
}
利用 sort()
function unique(arr){
if (!Array.isArray(arr)){
console.log('type error')
return;
}//检查是否为数组,可以不要
arr =arr.sort()
var array=[arr[0]];
for (var i = 1;i<arr.length;i++){
if(arr[i] !==arr[i-1]){
array.push(arr[i]);
}
}
return array;
}
利用Map数据结构去重
function unique(arr){
let map = new Map()
let array= new Array()
for (let i=0;i<arr.length;i++){
if(!map.has(arr[i])){
map.set(arr[i])
array.push(arr[i])
}
}
return array
}
这种方法会创建一个空的Map数据结构,遍历需要去重的数组,把数组的每个元素作为key存到Map中。由于Map中不会出现相同的Key值所以最终得到的就是去重之后的结果。