js实现数组去重的几种方法
数组去重的方法
1. for循环
略
2. for循环 + indexOf / includes
let arr = [1, 2, 1, 3, 2, 4, 3, 5, 4]
let newArr = []
for (let i = 0, l = arr.length; i < l; i++) {
if (newArr.indexOf(arr[i]) === -1) {
newArr.push(arr[i])
}
}
console.log(newArr)
3. forEach + includes / indexOf
let arr = [1, 2, 1, 3, 2, 4, 3, 5, 4]
let newArr = []
arr.forEach(item => {
if (!newArr.includes(item)) newArr.push(item)
})
console.log(newArr)
4. 基于对象处理
let arr = [1, 2, 1, 3, 2, 4, 3, 5, 4]
let obj = {}
for (let i = 0; i < arr.length; i++) {
let item = arr[i]
// 如果对象中已经有该元素, 说明该元素是重复元素
if (obj[item] !== undefined) {
// 就把数组最后一位放在该位置, 相当于删掉了该元素
arr[i] = arr[arr.length - 1]
// 数组长度减1, 将最后一个元素去掉
arr.length--
// i减一, 保证下次循环从替换的元素开始
i--
continue
}
obj[item] = item
}
console.log(arr)
5. 通过Set和拓展运算符 ...
let arr = [1, 2, 1, 3, 2, 4, 3, 5, 4]
let newArr = [...new Set(arr)]
console.log(newArr)
仅记录自己的学习总结,如有错误,还请评论指正~