如何实现数组去重?
假设有数组 array = [1,5,2,3,4,2,3,1,3,4]
你要写一个函数 unique,使得
unique(array) 的值为 [1,5,2,3,4]
也就是把重复的值都去掉,只保留不重复的值。

用数组的includes或者indexOf方法

  1. function unique(arr){
  2. let newArr = []
  3. for (let i = 0; i < arr.length; i++){
  4. if (!newArr.includes(arr[i])){
  5. newArr.push(arr[i])
  6. }
  7. }
  8. return newArr
  9. }
  10. let array = [1,5,2,3,4,2,3,1,3,4]
  11. let newArr = unique(array)
  12. console.log(newArr)

Set()

  1. function unique(arr){
  2. return [...new Set(arr)]
  3. }
  4. let array = [1,5,2,3,4,2,3,1,3,4]
  5. let newArr = unique(array)
  6. console.log(newArr)

将数组变成set

  1. let mySet = new Set([1, 2, 3]) // 自动去重

将set变成数组

  1. let arr = [...mySet]

Map()

Map 对象保存键值对,并且能够记住键的原始插入顺序。任何值(对象或者原始值) 都可以作为一个键或一个值。

  1. function unique(arr){
  2. let myMap = new Map()
  3. let newArr = []
  4. for (item of arr) {
  5. if (myMap.has(item)) {
  6. myMap.set(item, false)
  7. } else {
  8. myMap.set(item, true)
  9. newArr.push(item)
  10. }
  11. }
  12. return newArr
  13. }
  14. let array = [1,5,2,3,4,2,3,1,3,4]
  15. let newArr = unique(array)
  16. console.log(newArr)