题目:

假设有数组 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值所以最终得到的就是去重之后的结果。