如何实现数组去重?
假设有数组 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)