首頁 >web前端 >js教程 >如何從 JavaScript 陣列中刪除重複值?

如何從 JavaScript 陣列中刪除重複值?

Linda Hamilton
Linda Hamilton原創
2024-12-22 12:22:11996瀏覽

How Can I Remove Duplicate Values from a JavaScript Array?

從 JS 陣列中刪除重複值

JavaScript 陣列中的重複元素是一個常見問題。為了解決這個問題,可以採用各種方法。

Set 和 Spread 語法:

最簡潔的解決方案使用 Set 建構子和 Spread 語法:

uniq = [...new Set(array)];

天真的方法:

為了簡單起見,一種簡單的方法是根據索引過濾元素:

uniqueArray = a.filter(function(item, pos) {
    return a.indexOf(item) == pos;
});

使用雜湊表:

更有效的方法利用雜湊表,使用物件屬性作為鍵:

function uniq(a) {
    var seen = {};
    return a.filter(function(item) {
        return seen.hasOwnProperty(item) ? false : (seen[item] = true);
    });
}

組合方法:

為了處理不同的數組,混合解決方案結合了基元的雜湊表和物件的線性搜尋:

function uniq(a) {
    var prims = {"boolean":{}, "number":{}, "string":{}}, objs = [];

    return a.filter(function(item) {
        var type = typeof item;
        if(type in prims)
            return prims[type].hasOwnProperty(item) ? false : (prims[type][item] = true);
        else
            return objs.indexOf(item) >= 0 ? false : objs.push(item);
    });
}

排序與篩選:

過濾前排序提供了另一種選擇,根據相鄰值刪除重複項元素:

function uniq(a) {
    return a.sort().filter(function(item, pos, ary) {
        return !pos || item != ary[pos - 1];
    });
}

自訂比較:

對於唯一比較,可以傳遞回調,並過濾相同的“鍵”:

function uniqBy(a, key) {
    var seen = {};
    return a.filter(function(item) {
        var k = key(item);
        return seen.hasOwnProperty(k) ? false : (seen[k] = true);
    })
}

以上是如何從 JavaScript 陣列中刪除重複值?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn