js 数组去重的方法
数组去重常用的七种方法(个人总结)
//实例数组
var arr = [12, 10, 32, 54, 21, 12, 10, 54]
法一 利用对象属性不会重复的原理 将数组的每一项变成对象的属性 然后查询对象属性 没有 就添加进新数组
var obj = {}
var brr = []
for (var i = 0; i < arr.length; i++) {
if (obj[arr[i]] == undefined) {
obj[arr[i]] = 1
brr.push(arr[i])
} else {
obj[arr[i]] += 1
}
}
console.log(obj)//可以看到数组元素以及重复的个数
console.log(brr)//去重之后的数组
法二 利用sort()将重复的放一起 然后使用splice()删掉重复的元素
arr.sort(function (a, b) {
return a - b
})
for (var i = 0; i < arr.length; i++) {
if (arr[i] == arr[i + 1]) {
arr.splice(i, 1)
i--
}
}
console.log(arr)
法三 双循环遍历数组 重复的删掉 注意删除元素之后 要改变下标 es5常用
for (var i = 0; i < arr.length - 1; i++) {
for (var j = i + 1; j < arr.length; j++) {
if (arr[i] == arr[j]) {
arr.splice(j, 1)
j--
}
}
}
console.log(arr)
法四 利用forEach()遍历数组 用indexOf()判断是否在新数组 不在就在新数组添加元素
var brr = []
arr.forEach(function (item) {
if (brr.indexOf(item) == -1) {
brr.push(item)
}
})
console.log(brr)
法五 利用forEach()遍历数组 用includes()判断是否在新数组 不在就在新数组添加元素 原理与法四类似
var brr = []
arr.forEach(function (item) {
if (!brr.includes(item)) {
brr.push(item)
}
})
console.log(brr)
法六 利用Set结构不会有重复元素的原理 以及...运算符 es6
var brr = [...new Set(arr)]
console.log(brr)
法七 利用Set结构不会有重复元素的原理 以及Array.from()方法 与法六原理类似
var brr = Array.from(new Set(arr))
console.log(brr)
这七种方法个人感觉比较容易想到,当然有的原理比较类似就是换了种方法。网上也有很多去重方法感觉大同小异,大家做个参考就好。


浙公网安备 33010602011771号