Javascript數組去重,你學會了嗎?
作者:前端老兵
Set 對象是一個較新的特性,在一些舊的瀏覽器中可能需要 polyfill 支持。而使用 filter() 或者 reduce() 可能更易于理解,并且不需要額外的 polyfill。
1. Javascript數組去重
在JavaScript中,有多種方法可以實現數組去重。
這里我將提供幾種常見的方法來幫助你理解和實現。
1.1. 方法 1: 使用 Set 和 Spread Operator
function unique(array) {
return [...new Set(array)];
}
let arr = [1, 2, 2, 3, 4, 4, 5];
console.log(unique(arr)); // 輸出 [1, 2, 3, 4, 5]
1.2. 方法 2: 使用 filter()
這種方法是通過遍歷數組,并且對于每一個元素檢查它是否在之后的部分再次出現。
如果一個元素后面沒有相同的元素,則保留該元素。
function unique(array) {
return array.filter((item, index, arr) => arr.indexOf(item) === index);
}
let arr = [1, 2, 2, 3, 4, 4, 5];
console.log(unique(arr)); // 輸出 [1, 2, 3, 4, 5]
1.3. 方法 3: 使用 reduce() 和 Set
function unique(array) {
return Array.from(new Set(array));
// 或者使用 reduce 實現
// return array.reduce((acc, item) => acc.includes(item) ? acc : [...acc, item], []);
}
let arr = [1, 2, 2, 3, 4, 4, 5];
console.log(unique(arr)); // 輸出 [1, 2, 3, 4, 5]
1.4. 方法 4: 使用 Object 或 Map
利用對象的鍵值對特性來存儲數組中的元素,并以鍵的形式存儲唯一的元素。
function unique(array) {
let obj = {};
let result = [];
for (let i = 0; i < array.length; i++) {
if (!obj[array[i]]) {
obj[array[i]] = true;
result.push(array[i]);
}
}
return result;
}
let arr = [1, 2, 2, 3, 4, 4, 5];
console.log(unique(arr)); // 輸出 [1, 2, 3, 4, 5]
每種方法都有其適用場景,選擇哪種取決于你的具體需求以及瀏覽器或環境的支持情況。
例如,Set 對象是一個較新的特性,在一些舊的瀏覽器中可能需要 polyfill 支持。而使用 filter() 或者 reduce() 可能更易于理解,并且不需要額外的 polyfill。
責任編輯:武曉燕
來源:
前端愛好者