在 JavaScript 中,有幾種常見的方法可以對數(shù)組進(jìn)行去重操作。下面介紹其中幾種常用的方法:
1. 使用 Set
Set 是 ES6 引入的一種數(shù)據(jù)結(jié)構(gòu),它可以存儲唯一的值,利用這個特性可以輕松實現(xiàn)數(shù)組去重。通過將數(shù)組轉(zhuǎn)換為 Set,然后再將 Set 轉(zhuǎn)換回數(shù)組,就可以去除重復(fù)的元素。
const arr = [1, 2, 3, 3, 4, 4, 5];
const uniqueArr = Array.from(new Set(arr));
console.log(uniqueArr); // [1, 2, 3, 4, 5]
或者使用擴(kuò)展運(yùn)算符(Spread Operator)進(jìn)行轉(zhuǎn)換:
const arr = [1, 2, 3, 3, 4, 4, 5];
const uniqueArr = [...new Set(arr)];
console.log(uniqueArr); // [1, 2, 3, 4, 5]
2. 使用 indexOf 或 includes
這種方法通過遍歷數(shù)組,利用 indexOf 或 includes 方法來判斷元素是否已經(jīng)存在于新數(shù)組中,如果不存在則添加到新數(shù)組中。
const arr = [1, 2, 3, 3, 4, 4, 5];
const uniqueArr = [];
for (let i = 0; i < arr.length; i++) {
if (uniqueArr.indexOf(arr[i]) === -1) {
uniqueArr.push(arr[i]);
}
}
console.log(uniqueArr); // [1, 2, 3, 4, 5]
3. 使用 filter
使用 filter 方法結(jié)合 indexOf 或 includes 方法來過濾出不重復(fù)的元素,形成新數(shù)組。
const arr = [1, 2, 3, 3, 4, 4, 5];
const uniqueArr = arr.filter((item, index) => {
return arr.indexOf(item) === index;
});
console.log(uniqueArr); // [1, 2, 3, 4, 5]
4. 使用 reduce
使用 reduce 方法,遍歷數(shù)組,將不重復(fù)的元素添加到新數(shù)組中。
const arr = [1, 2, 3, 3, 4, 4, 5];
const uniqueArr = arr.reduce((prev, curr) => {
if (!prev.includes(curr)) {
prev.push(curr);
}
return prev;
}, []);
console.log(uniqueArr); // [1, 2, 3, 4, 5]
這些方法都可以實現(xiàn)數(shù)組去重的功能,選擇使用哪種方法取決于個人偏好和具體的需求。