1 Set
let rest = [...new Set(arr)] 或
let rest = Array.from(new Set(arrr))
2 filter和 Set 或则 filter和Map
const set = new Set()
const rest = arr.filter(value => !set.has(value)&&set.add(value))
或者
const map = new Map()
const rest = arr.filter(value => !map.get(value)&&map.set(value, value))
3 reduce+Map 或者 reduce+Set
const map = new Map()
const rest = arr.reduce((preValue, currentValue) => {
!map.get(currentValue) ? preValue.push(currentValue) && map.set(currentValue, currentValue) : ''
return preValue
}, [])
const set = new Set)
const rest = arr.reduce((preValue, currentValue) => {
!set.has(currentValue) ? preValue.push(currentValue) && set.add(currentValue) : ''
return preValue
}, [])
4 一层循环
function unique(arr){
let temp = [], set = new Set()
for(let i=0; i<arr.length; i++){
if(!set.has(arr[i])){
temp.push(arr[i])
set.add(arr[i])
}
}
return temp
}
5 两层循环
function uniqueData(arr) {
if (!Array.isArray(arr)) {
return
}
for(let i=0; i<arr.length; i++){
for(let j=i+1; j<arr.length; j++){
if(arr[i]===arr[j]){ // 第一个等同于第二个,splice方法删除第二个
arr.splice(j,1)
j--
}
}
}
return arr
}