成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專(zhuān)欄INFORMATION COLUMN

數(shù)組循環(huán)刪除的問(wèn)題

villainhr / 1574人閱讀

摘要:?jiǎn)栴}描述簡(jiǎn)單的需求,要?jiǎng)h除數(shù)組中不符合條件的元素。如果學(xué)科存在數(shù)組過(guò)濾接收一個(gè)函數(shù),根據(jù)該函數(shù)返回為決定該元素保留還是刪除兼容請(qǐng)選擇項(xiàng),默認(rèn)保留保留器具類(lèi)別的學(xué)科與當(dāng)前學(xué)科相同的項(xiàng)

問(wèn)題描述

簡(jiǎn)單的需求,要?jiǎng)h除數(shù)組中不符合條件的元素。

錯(cuò)誤實(shí)現(xiàn)

最初的實(shí)現(xiàn),foreach循環(huán),發(fā)現(xiàn)就是不對(duì)。

// 如果學(xué)科存在id
if (discipline.id) {
    // foreach類(lèi)別
    angular.forEach(result, function(value, key) {
        // 如果該類(lèi)別有對(duì)應(yīng)學(xué)科(考慮到“請(qǐng)選擇的情況下”會(huì)報(bào)從undefined上獲取id)
        // 并且該學(xué)科類(lèi)別id不等于傳入學(xué)科id
        if (value.discipline && !angular.equals(value.discipline.id, discipline.id)) {
            // 移除不符合要求的元素
            result.splice(key, 1);
        }
    });
}

每次刪除時(shí),都是根據(jù)key進(jìn)行刪除的,但是刪除之后,數(shù)組的長(zhǎng)度就會(huì)發(fā)生變化,導(dǎo)致下次再根據(jù)key去刪除,發(fā)現(xiàn)長(zhǎng)度變了,我們想刪除的元素的位置也變了。

解決方案

Java中,我們使用iterator方法拿到其迭代對(duì)象,然后對(duì)其進(jìn)行修改。

// 如果學(xué)科存在id
if (discipline.id) {
    /**
     * 數(shù)組過(guò)濾
     * 接收一個(gè)函數(shù),根據(jù)該函數(shù)返回為true/false
     * 決定該元素保留還是刪除
     */
    result = result.filter(function(value) {
        // 兼容請(qǐng)選擇項(xiàng),默認(rèn)保留
        if (!value.discipline) {
            return true;
        }
        // 保留器具類(lèi)別的學(xué)科id與當(dāng)前學(xué)科id相同的項(xiàng)
        return angular.equals(value.discipline.id, discipline.id);
    });
}

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

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

相關(guān)文章

  • Java中如何優(yōu)雅地刪除List中元素

    摘要:刪除元素后,立即跳出,則正常退出,但不能向后繼續(xù)循環(huán)了刪除后立馬終端循環(huán),會(huì)正常跳出,但代價(jià)是不能繼續(xù)向后循環(huán)了使用迭代器使用迭代器可,正確無(wú)誤的刪除,代碼簡(jiǎn)潔優(yōu)雅,推薦使用使用迭代器可,正確無(wú)誤的刪除注意這里時(shí)而不是 在工作中的許多場(chǎng)景下,我們都會(huì)使用到List這個(gè)數(shù)據(jù)結(jié)構(gòu),那么同樣的有很多場(chǎng)景下需要?jiǎng)h除List中的某一個(gè)元素或某幾個(gè)元素,那么我們?cè)撊绾握_無(wú)誤地刪除List中的元素...

    kelvinlee 評(píng)論0 收藏0
  • 細(xì)說(shuō)JS數(shù)組

    摘要:數(shù)組元素的讀寫(xiě)使用訪問(wèn)數(shù)組元素時(shí),將索引轉(zhuǎn)換為字符串,然后將其作為屬性名一樣使用。第一個(gè)參數(shù)應(yīng)該在前只展開(kāi)一層數(shù)組元素不變,返回注意,只拼接第一層結(jié)構(gòu)。 此乃犀牛書(shū)(第七章 數(shù)組)讀書(shū)筆記,又結(jié)合了ES6中數(shù)組的擴(kuò)展部分做的知識(shí)梳理。精華部分就是手工繪制的兩張數(shù)組總結(jié)圖了。靈活運(yùn)用數(shù)組的各種方法是基本功,是基本功,是基本功,重要的事情說(shuō)三遍。好了,正文從下面開(kāi)始~ 數(shù)組的基本概念 什么...

    starsfun 評(píng)論0 收藏0
  • Java013-集合

    摘要:集合框架重點(diǎn)理解用于存儲(chǔ)數(shù)據(jù)的容器。集合容器在不斷向上抽取過(guò)程中。出現(xiàn)了集合體系。,刪除將集合中的元素全刪除,清空集合。刪除集合中指定的對(duì)象。注意刪除成功,集合的長(zhǎng)度會(huì)改變。作用用于取集合中的元素。是集合特有的迭代器。是單列集合是雙列集合 集合框架(重點(diǎn)理解):用于存儲(chǔ)數(shù)據(jù)的容器。特點(diǎn):1:對(duì)象封裝數(shù)據(jù),對(duì)象多了也需要存儲(chǔ)。集合用于存儲(chǔ)對(duì)象。2:對(duì)象的個(gè)數(shù)確定可以使用數(shù)組,但是不確定怎...

    qpal 評(píng)論0 收藏0
  • JS 數(shù)組循環(huán)遍歷方法對(duì)比

    摘要:循環(huán)方法方法不改變?cè)瓟?shù)組方法會(huì)給原數(shù)組中的每個(gè)元素都按順序調(diào)用一次函數(shù)。篩選出過(guò)濾出數(shù)組中符合條件的項(xiàng)組成新數(shù)組代碼方法方法為數(shù)組中的每個(gè)元素執(zhí)行一次函數(shù),直到它找到一個(gè)使返回表示可轉(zhuǎn)換為布爾值的值的元素。 showImg(https://segmentfault.com/img/bV2QTD?w=1600&h=500); 前言 JavaScript 發(fā)展至今已經(jīng)發(fā)展出多種數(shù)組的循環(huán)遍...

    BlackFlagBin 評(píng)論0 收藏0
  • for循環(huán)和for in在遍歷數(shù)組區(qū)別

    摘要:舉個(gè)例子,如果你的數(shù)組中有一個(gè)可枚舉屬性,循環(huán)將額外執(zhí)行一次,遍歷到名為的索引。就連數(shù)組原型鏈上的屬性都能被訪問(wèn)到。某些情況下,可能按照隨機(jī)順序遍歷數(shù)組元素。 困惑 在練習(xí)數(shù)組操作的時(shí)候,希望實(shí)現(xiàn)刪除數(shù)組中特定元素(比如刪除字符1)的功能很容易地就想到了利用for循環(huán)和splice方法 for (let i = 0; i < hobbies.length; i++) { ...

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

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

0條評(píng)論

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