狠狠色丁香婷婷综合尤物/久久精品综合一区二区三区/中国有色金属学报/国产日韩欧美在线观看 - 国产一区二区三区四区五区tv

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

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

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

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

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

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

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

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

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

2. 使用filter()方法

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

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

function removeDuplicatesWithFilter(arr{
    // 使用filter方法,只有當(dāng)元素的索引和元素首次出現(xiàn)的位置相同時(shí),才保留該元素
    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 = []; // 初始化一個(gè)空數(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)去重

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

const arr = [1988725333231454445522];

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

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

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

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

const arr = [1988725333231454445522];

function removeDuplicatesWithIndexOf(arr{
    const uniqueArray = [];
    for (let i = 0; i < arr.length; i++) {
        // 只有當(dāng)元素首次出現(xiàn)時(shí)才添加到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中不包含當(dāng)前元素,則添加之
        if (!uniqueArray.includes(arr[i])) {
            uniqueArray.push(arr[i]);
        }
    }
    return uniqueArray;
}

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

7. 使用reduce()方法

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

const arr = [1988725333231454445522];

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

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

每種方法都有其適用場(chǎng)景和性能特點(diǎn),選擇最適合的方法取決于具體的項(xiàng)目需求和環(huán)境。通常,使用ES6的Setfilter()方法是最佳選擇,因?yàn)樗鼈兗群?jiǎn)潔又高效。


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