LOGO OA教程 ERP教程 模切知識交流 PMS教程 CRM教程 開發(fā)文檔 其他文檔  
 
網(wǎng)站管理員

JavaScript七個數(shù)組去重方法

admin
2024年7月20日 21:24 本文熱度 912

在JavaScript中,去除數(shù)組中重復元素的需求十分常見,下面詳細介紹并演示七種不同的去重方法,每種方法都會附帶必要的代碼注釋。

1. 使用ES6的Set結(jié)構(gòu)

Set是一種集合數(shù)據(jù)結(jié)構(gòu),它不允許有重復的元素。通過擴展運算符...可以輕松地將Set轉(zhuǎn)換回數(shù)組,從而達到去重的目的。

// 原始數(shù)組
const arr = [1988725333231454445522];

// 定義去重函數(shù)
function removeDuplicatesWithSet(arr{
    // 創(chuàng)建一個Set,自動去除重復元素
    const uniqueSet = new Set(arr);
    // 使用擴展運算符將Set轉(zhuǎn)換為數(shù)組
    const uniqueArray = [...uniqueSet];
    return uniqueArray;
}

// 調(diào)用函數(shù)并打印結(jié)果
const result = removeDuplicatesWithSet(arr);
console.log(result);

2. 使用filter()方法

filter()方法會創(chuàng)建一個新數(shù)組,其結(jié)果是通過提供的函數(shù)實現(xiàn)數(shù)組中的每個元素的篩選。

const arr = ['apple''apps''pear''apple''orange''apps'];

function removeDuplicatesWithFilter(arr{
    // 使用filter方法,只有當元素的索引和元素首次出現(xiàn)的位置相同時,才保留該元素
    return arr.filter((item, index) => arr.indexOf(item) === index);
}

const result = removeDuplicatesWithFilter(arr);
console.log(result);

3. 使用for循環(huán)和indexOf()

這種方法遍歷數(shù)組,使用indexOf()檢查元素是否已經(jīng)存在于結(jié)果數(shù)組中。

const arr = [1988725333231454445522];

function removeDuplicatesWithFor(arr{
    const uniqueArray = []; // 初始化一個空數(shù)組用于存放唯一元素
    for (let i = 0; i < arr.length; i++) {
        // 如果元素尚未在uniqueArray中出現(xiàn),則添加之
        if (uniqueArray.indexOf(arr[i]) === -1) {
            uniqueArray.push(arr[i]);
        }
    }
    return uniqueArray;
}

const result = removeDuplicatesWithFor(arr);
console.log(result);

4. 雙重for循環(huán)去重

盡管這種方法可以工作,但它效率低下,不推薦使用,尤其是對于大型數(shù)組。

const arr = [1988725333231454445522];

function removeDuplicatesWithDoubleFor(arr{
    for (let i = 0; i < arr.length; i++) {
        for (let j = i + 1; j < arr.length; j++) {
            // 當找到重復元素時,從數(shù)組中移除它
            if (arr[i] === arr[j]) {
                arr.splice(j, 1);
                j--; // 由于splice改變了數(shù)組長度,所以需要減一以保持正確的索引
            }
        }
    }
    return arr;
}

const result = removeDuplicatesWithDoubleFor(arr);
console.log(result);

5. 使用indexOf()與新數(shù)組

這種方法檢查元素在原始數(shù)組中的首次出現(xiàn)位置,如果該位置與當前索引匹配,則添加到新數(shù)組中。

const arr = [1988725333231454445522];

function removeDuplicatesWithIndexOf(arr{
    const uniqueArray = [];
    for (let i = 0; i < arr.length; i++) {
        // 只有當元素首次出現(xiàn)時才添加到uniqueArray中
        if (arr.indexOf(arr[i]) === i) {
            uniqueArray.push(arr[i]);
        }
    }
    return uniqueArray;
}

const result = removeDuplicatesWithIndexOf(arr);
console.log(result);

6. 使用includes()方法

includes()方法檢查數(shù)組中是否存在指定的值,如果存在則返回true,否則返回false

const arr = [1988725333231454445522];

function removeDuplicatesWithIncludes(arr{
    const uniqueArray = [];
    for (let i = 0; i < arr.length; i++) {
        // 如果uniqueArray中不包含當前元素,則添加之
        if (!uniqueArray.includes(arr[i])) {
            uniqueArray.push(arr[i]);
        }
    }
    return uniqueArray;
}

const result = removeDuplicatesWithIncludes(arr);
console.log(result);

7. 使用reduce()方法

reduce()方法對數(shù)組中的每個元素執(zhí)行一個由您提供的reducer函數(shù),將其結(jié)果匯總為單個返回值。

const arr = [1988725333231454445522];

function removeDuplicatesWithReduce(arr{
    // reducer函數(shù),檢查acc(累加器)中是否已經(jīng)包含當前元素,如果沒有,則添加
    return arr.reduce((acc, curr) => {
        if (!acc.includes(curr)) {
            acc.push(curr);
        }
        return acc;
    }, []);
}

const result = removeDuplicatesWithReduce(arr);
console.log(result);

每種方法都有其適用場景和性能特點,選擇最適合的方法取決于具體的項目需求和環(huán)境。通常,使用ES6的Setfilter()方法是最佳選擇,因為它們既簡潔又高效。


該文章在 2024/7/22 11:47:20 編輯過
關(guān)鍵字查詢
相關(guān)文章
正在查詢...
點晴ERP是一款針對中小制造業(yè)的專業(yè)生產(chǎn)管理軟件系統(tǒng),系統(tǒng)成熟度和易用性得到了國內(nèi)大量中小企業(yè)的青睞。
點晴PMS碼頭管理系統(tǒng)主要針對港口碼頭集裝箱與散貨日常運作、調(diào)度、堆場、車隊、財務(wù)費用、相關(guān)報表等業(yè)務(wù)管理,結(jié)合碼頭的業(yè)務(wù)特點,圍繞調(diào)度、堆場作業(yè)而開發(fā)的。集技術(shù)的先進性、管理的有效性于一體,是物流碼頭及其他港口類企業(yè)的高效ERP管理信息系統(tǒng)。
點晴WMS倉儲管理系統(tǒng)提供了貨物產(chǎn)品管理,銷售管理,采購管理,倉儲管理,倉庫管理,保質(zhì)期管理,貨位管理,庫位管理,生產(chǎn)管理,WMS管理系統(tǒng),標簽打印,條形碼,二維碼管理,批號管理軟件。
點晴免費OA是一款軟件和通用服務(wù)都免費,不限功能、不限時間、不限用戶的免費OA協(xié)同辦公管理系統(tǒng)。
Copyright 2010-2025 ClickSun All Rights Reserved

黄频国产免费高清视频,久久不卡精品中文字幕一区,激情五月天AV电影在线观看,欧美国产韩国日本一区二区
日本中文字幕乱码视频在线 | 亚洲女V在线免费观看 | 婷婷久久综合九色综合98 | 在线观看AV官网 | 思思热国产视频观看 | 亚洲综合在线在线看 |