亚洲中字慕日产2020,大陆极品少妇内射AAAAAA,无码av大香线蕉伊人久久,久久精品国产亚洲av麻豆网站

資訊專(zhuān)欄INFORMATION COLUMN

js重用數(shù)組去重算法

stdying / 2814人閱讀

摘要:原文地址方法一普通方法方法二實(shí)質(zhì)上是方法一的變通版本創(chuàng)建一個(gè)目的數(shù)組,并把源數(shù)組的第一項(xiàng)添加到目的數(shù)組的第一項(xiàng)上面的方法可以簡(jiǎn)單處理或者或者方法三方法以空間換時(shí)間速度最快或者可以這樣說(shuō)明對(duì)象中已經(jīng)存在這一項(xiàng)了,也就是說(shuō)在數(shù)組中重復(fù)了

原文地址

方法一 普通方法
function unique1(srcArr) {
    let dstArr = []
    for (let i = 0; i < srcArr.length - 1; i++) {
        if (dstArr.indexOf(srcArr[i]) == -1) dstArr.push(srcArr[i])
    }
    return dstArr;
}
方法二 實(shí)質(zhì)上是方法一的變通版本
function unique2(srcArr) {
    // 創(chuàng)建一個(gè)目的數(shù)組,并把源數(shù)組的第一項(xiàng)添加到目的數(shù)組的第一項(xiàng)
    let destArr = [srcArr[0]]
    for(let i = 1; i < srcArr.length - 1; i++) {
        if(srcArr.indexOf(srcArr[i]) == i) destArr.push(srcArr[i]);
    }
    return destArr;
}

// 上面的方法可以簡(jiǎn)單處理

function unique3(srcArr) {
    return srcArr.filter((v, i) => srcArr.indexOf(v) === i)
}
// 或者
function unique4(srcArr) {
    return srcArr.form(new Set(srcArr))
}
// 或者
function unique5(srcArr) {
    return [...new Set(this)];
}
方法三 hash方法 以空間換時(shí)間, 速度最快
function unique6(srcArr) {
    let tempMap = {}, dstArr = [];
    for(let i = 0; i < srcArr.length - 1; i++) {
        if(!tempMap[srcArr[i]]) {
            destArr.push(srcArr[i]);
            tempMap[srcArr] = true;
        }
    }
    return destArr
}

// 或者 可以這樣

function unique7(srcArr) {
    var obj = {};
    for(var i = 0 ; i < srcArr.length; i++){
        var cur = srcArr[i];
        if(obj[cur] == cur){//說(shuō)明對(duì)象中已經(jīng)存在cur這一項(xiàng)了,也就是說(shuō)在數(shù)組中重復(fù)了,刪除就可以了
            // arr.splice(i,1); //用這個(gè)存在問(wèn)題:后面每一項(xiàng)索引都改變,如果有1千萬(wàn)項(xiàng),非常耗性能
            // 解決思路,我把數(shù)組末尾那一項(xiàng)的值拿過(guò)來(lái),替換當(dāng)前項(xiàng),再把數(shù)組末尾那一項(xiàng)的值刪除掉就行
            srcArr[i] = srcArr[srcArr.length-1];
            srcArr.length -- ;
            i --;//解決了數(shù)組塌陷問(wèn)題
            continue;
        }
        obj[cur] = cur;
    }
}
方法四 排序后相鄰去重

這個(gè)方法也能想到,當(dāng)初面試的時(shí)候想到的就是這個(gè)方法

function unique8(srcArr) {
    srcArr.sort()
    let dstArr = [srcArr[0]];
    if(srcArr[i] !== destArr[destArr.length - 1]) destArr.push(srcArr[i]);
    return destArr;
}
方法五 優(yōu)化遍歷數(shù)組 其實(shí)這個(gè)方法跟第一個(gè)方法沒(méi)什么區(qū)別
function unique9(srcArr) {
    let dstArr = []
    for(let i = 0; i < srcArr.length; i++) {
        for(let j = i + 1; j < srcArr.length; j++)
            if (srcArr[i] === srcArr[j]) j = ++i;
        destArr.push(srcArr[i]);    
    }
    return destArr;
}

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://www.ezyhdfw.cn/yun/100320.html

相關(guān)文章

  • JS程序

    摘要:設(shè)計(jì)模式是以面向?qū)ο缶幊虨榛A(chǔ)的,的面向?qū)ο缶幊毯蛡鹘y(tǒng)的的面向?qū)ο缶幊逃行┎顒e,這讓我一開(kāi)始接觸的時(shí)候感到十分痛苦,但是這只能靠自己慢慢積累慢慢思考。想繼續(xù)了解設(shè)計(jì)模式必須要先搞懂面向?qū)ο缶幊?,否則只會(huì)讓你自己更痛苦。 JavaScript 中的構(gòu)造函數(shù) 學(xué)習(xí)總結(jié)。知識(shí)只有分享才有存在的意義。 是時(shí)候替換你的 for 循環(huán)大法了~ 《小分享》JavaScript中數(shù)組的那些迭代方法~ ...

    melody_lql 評(píng)論0 收藏0
  • js常見(jiàn)算法(一):排序,數(shù)組去重,打亂數(shù)組,統(tǒng)計(jì)數(shù)組各個(gè)元素出現(xiàn)的次數(shù), 字符串各個(gè)字符的出現(xiàn)次數(shù)

    摘要:排序,數(shù)組去重,打亂數(shù)組,統(tǒng)計(jì)數(shù)組各個(gè)元素出現(xiàn)的次數(shù),字符串各個(gè)字符的出現(xiàn)次數(shù),獲取地址鏈接的各個(gè)參數(shù)以后會(huì)記錄自己解決過(guò)和遇到過(guò)的算法相關(guān)的題,系列一就以常見(jiàn)的開(kāi)篇吧。 排序,數(shù)組去重,打亂數(shù)組,統(tǒng)計(jì)數(shù)組各個(gè)元素出現(xiàn)的次數(shù), 字符串各個(gè)字符的出現(xiàn)次數(shù),獲取地址鏈接的各個(gè)參數(shù) 以后會(huì)記錄自己解決過(guò)和遇到過(guò)的算法相關(guān)的題,系列一就以常見(jiàn)的開(kāi)篇吧。 排序 本來(lái)想多列幾個(gè)排序方法,但是其它都...

    DTeam 評(píng)論0 收藏0
  • JavasScript重難點(diǎn)知識(shí)

    摘要:忍者級(jí)別的函數(shù)操作對(duì)于什么是匿名函數(shù),這里就不做過(guò)多介紹了。我們需要知道的是,對(duì)于而言,匿名函數(shù)是一個(gè)很重要且具有邏輯性的特性。通常,匿名函數(shù)的使用情況是創(chuàng)建一個(gè)供以后使用的函數(shù)。 JS 中的遞歸 遞歸, 遞歸基礎(chǔ), 斐波那契數(shù)列, 使用遞歸方式深拷貝, 自定義事件添加 這一次,徹底弄懂 JavaScript 執(zhí)行機(jī)制 本文的目的就是要保證你徹底弄懂javascript的執(zhí)行機(jī)制,如果...

    forsigner 評(píng)論0 收藏0
  • 【譯】JS基礎(chǔ)算法腳本:類(lèi)數(shù)組(arguments)去重

    摘要:參數(shù)用來(lái)測(cè)試數(shù)組的每個(gè)元素的函數(shù)。調(diào)用時(shí)使用參數(shù)。返回表示保留該元素通過(guò)測(cè)試,則不保留。執(zhí)行時(shí)的用于的值。那些沒(méi)有通過(guò)測(cè)試的元素會(huì)被跳過(guò),不會(huì)被包含在新數(shù)組中。有其他好的方法或思路的道友,不妨在沙發(fā)區(qū)神交一番。 需求 給出一個(gè)類(lèi)數(shù)組,刪除要求的重復(fù)數(shù)據(jù),返回新數(shù)組 destroyer([1, 2, 3, 1, 2, 3], 2, 3) should return [1, 1] dest...

    mrcode 評(píng)論0 收藏0
  • JS數(shù)組專(zhuān)題2?? ? 數(shù)組去重

    距離上次發(fā)文,已經(jīng)有一段時(shí)間了,最近工作比較忙,這不眼看快雙十一了,就相當(dāng)于給大家一些福利吧! showImg(https://segmentfault.com/img/remote/1460000016538082?w=250&h=250); 一、什么是數(shù)組去重 簡(jiǎn)單說(shuō)就是把數(shù)組中重復(fù)的項(xiàng)刪除掉,你 GET 到了嗎 ?下面我將簡(jiǎn)單介紹下幾種基本的方法及其優(yōu)缺點(diǎn)。 二、方法匯總 兩層循環(huán) 無(wú)相同...

    tunny 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<