文章目录
前言
数组判重的场景很多,方法也不唯一,下面从三个角度出发,列举三种常用的判重方法.
方法1–indexOf
原理是indexOf返回该元素的第一个索引,出现重复,自然和当前索引不一致
const arr = [3, 1, 2, 5, 4, 9, 7, 4]
function getRepeatItem1() {
for (let index = 0; index < arr.length; index++) {
const item = arr[index];
if (arr.indexOf(item) !== index) {
return item
}
}
}
console.log(getRepeatItem1()
方法2–sort
原理是数组经过sort排序后,重复元素会相邻
const arr = [3, 1, 2, 5, 4, 9, 7, 4]
function getRepeatItem2() {
const sortArr = arr.sort();
for (let i = 0; i < arr.length; i++) {
if (sortArr[i] === sortArr[i + 1]) {
return sortArr[i]
}
}
}
console.log(getRepeatItem2())
方法3–map
原理是散列表,将遍历的数组项存入其中,每次先从散列表中判断是否存在,存在即重复
const arr = [3, 1, 2, 5, 4, 9, 7, 4]
function getRepeatItem3() {
const map = new Map();
for (let i = 0; i < arr.length; i++) {
if (map.get("val") === arr[i]) {
return arr[i]
}
map.set("val", arr[i]);
}
}
console.log(getRepeatItem3())