如何实现数组去重?
假设有数组 array = [1,5,2,3,4,2,3,1,3,4]
你要写一个函数 unique,使得
unique(array) 的值为 [1,5,2,3,4]
也就是把重复的值都去掉,只保留不重复的值。
用数组的includes或者indexOf方法
function unique(arr){let newArr = []for (let i = 0; i < arr.length; i++){if (!newArr.includes(arr[i])){newArr.push(arr[i])}}return newArr}let array = [1,5,2,3,4,2,3,1,3,4]let newArr = unique(array)console.log(newArr)
Set()
function unique(arr){return [...new Set(arr)]}let array = [1,5,2,3,4,2,3,1,3,4]let newArr = unique(array)console.log(newArr)
将数组变成set
let mySet = new Set([1, 2, 3]) // 自动去重
将set变成数组
let arr = [...mySet]
Map()
Map 对象保存键值对,并且能够记住键的原始插入顺序。任何值(对象或者原始值) 都可以作为一个键或一个值。
function unique(arr){let myMap = new Map()let newArr = []for (item of arr) {if (myMap.has(item)) {myMap.set(item, false)} else {myMap.set(item, true)newArr.push(item)}}return newArr}let array = [1,5,2,3,4,2,3,1,3,4]let newArr = unique(array)console.log(newArr)
