js常见的几种数组去重方法
1.includes
let res = []
for (let i = 0; i < arr.length; i++) {
if (!res.includes(arr[i])) {
res.push(arr[i])
}
}
2.indexOf
let res = []
for (let i = 0; i < arr.length; i++) {
if (res.indexOf(arr[i])===-1) {
res.push(arr[i])
}
}
3.findIndex
let res = []
for (let i = 0; i < arr.length; i++) {
if(i===arr.findIndex((el)=>{return el===arr[i]})){
console.log(arr[i])
res.push(arr[i])
}
}
4.Set
console.log(new Set([1,2,2,3]))
console.log(...(new Set([1,2,2,3])))
console.log([...(new Set([1,2,2,3]))])
let arr = [1,2,2,3]
const newArr = [...(new Set(arr))]
5.Set配合from
let arr = [1,2,2,3,4,4]
console.log(Array.from(new Set(arr)))
6.遍历相邻元素
arr.sort((a,b)=>{return a-b})
for (let i = 0; i < arr.length; i++) {
if(arr[i]!==arr[i+1]){
newArr.push(arr[i])
}
}
7.数组元素作为对象的属性
let obj = {}
let newArr = []
for (let i = 0; i < arr.length; i++) {
if(!obj[arr[i]]){
obj[arr[i]] = true
newArr.push(arr[i])
}
}
let obj = {}
return arr.reduce((acc,item) => {
obj[item] ? '': (obj[item] = true && acc.push(item))
return acc
}, [])
8.双重for循环实现
let res = []
for (let i = 0; i < arr.length; i++) {
let flag = true
for (let j = 0; j < res.length; j++) {
if (arr[i] === res[j]) {
flag = false
break
}
}
if (flag) {
res.push(arr[i])
}
}