下面是我整理的5种数组去重的方法,欢迎大家追加,以及评价哦!
1.第一种方法 es6 的新方法 new Set()
新增的数据结构,似于数组,但它的一大特性就是所有元素都是唯一的,没有重复的值,我们一般称为集合。
const arr1 = [1, 1, 2, 3, 4, 5, 2, 3, 4]
function quChong(data) {
const newArr = [...new Set(data)]
return newArr
}
const newArr = quChong(arr1)
console.log(newArr);//[1,2,3,4,5]
2.第二种方法 利用filter()过滤掉重复的元素 返回新的数组里面的就没有重复的元素
重点判断: 数组名.indexOf(数组元素) 如果数组里面没有该元素的话,返回的值就是-1,有该元素的话返回的是该元素的索引号
const arr2 = [1, 1, 2, 3, 4, 5, 2, 3, 4]
const res = arr2.filter((item, index) => {
// 判断当元素返回的是该元素的索引号时就返回
return arr2.indexOf(item) === index
})
console.log(res);//[1,2,3,4,5]
3.第三种方法 利用for 循环 搭配 indexOf 去重
重点思路:声明一个新数组,判断新数组里面是否有对应的值,没有的话就添加
const arr3 = [1, 1, 2, 3, 4, 5, 2, 3, 4]
const newArr3 = []
for (let i = 0; i < arr3.length; i++) {
if (newArr3.indexOf(arr3[i]) === -1) {
newArr3.push(arr3[i])
}
}
console.log(newArr3);//[1,2,3,4,5]
4.第四种方法 利用includes实现数组去重
重点思路:声明一个新数组,遍历数组,然后做一个判断,当新数组里面的值不包含旧数组里面的值的话,就把新数组里面的值添加到旧数组
const arr4 = [1, 1, 2, 3, 4, 5, 2, 3, 4]
const newArr4 = []
for (let i = 0; i < arr4.length; i++) {
if (!newArr4.includes(arr4[i])) {
newArr4.push(arr4[i])
}
}
console.log(newArr4);//[1,2,3,4,5]
5.第五种方法 双重for循环
注意:第二层会引起数组塌陷的情况,需要进行j--
const res1 = [1, 2, 2, 3, 1, 5, 2]
for (let i = 0; i < res1.length; i++) {
for (let j = i + 1; j < res1.length; j++) {
if (res1[i] === res1[j]) {
res1.splice(j, 1)
j--
}
}
}
console.log(res1)