前言
數組判重的場景很多,方法也不唯一,下面從三個角度出發,列舉三種常用的判重方法.
方法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())