摘要:問題描述簡單的需求,要刪除數組中不符合條件的元素。如果學科存在數組過濾接收一個函數,根據該函數返回為決定該元素保留還是刪除兼容請選擇項,默認保留保留器具類別的學科與當前學科相同的項
問題描述
簡單的需求,要刪除數組中不符合條件的元素。
錯誤實現最初的實現,foreach循環,發現就是不對。
// 如果學科存在id if (discipline.id) { // foreach類別 angular.forEach(result, function(value, key) { // 如果該類別有對應學科(考慮到“請選擇的情況下”會報從undefined上獲取id) // 并且該學科類別id不等于傳入學科id if (value.discipline && !angular.equals(value.discipline.id, discipline.id)) { // 移除不符合要求的元素 result.splice(key, 1); } }); }
每次刪除時,都是根據key進行刪除的,但是刪除之后,數組的長度就會發生變化,導致下次再根據key去刪除,發現長度變了,我們想刪除的元素的位置也變了。
解決方案在Java中,我們使用iterator方法拿到其迭代對象,然后對其進行修改。
// 如果學科存在id if (discipline.id) { /** * 數組過濾 * 接收一個函數,根據該函數返回為true/false * 決定該元素保留還是刪除 */ result = result.filter(function(value) { // 兼容請選擇項,默認保留 if (!value.discipline) { return true; } // 保留器具類別的學科id與當前學科id相同的項 return angular.equals(value.discipline.id, discipline.id); }); }
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://m.specialneedsforspecialkids.com/yun/96616.html
摘要:刪除元素后,立即跳出,則正常退出,但不能向后繼續循環了刪除后立馬終端循環,會正常跳出,但代價是不能繼續向后循環了使用迭代器使用迭代器可,正確無誤的刪除,代碼簡潔優雅,推薦使用使用迭代器可,正確無誤的刪除注意這里時而不是 在工作中的許多場景下,我們都會使用到List這個數據結構,那么同樣的有很多場景下需要刪除List中的某一個元素或某幾個元素,那么我們該如何正確無誤地刪除List中的元素...
摘要:集合框架重點理解用于存儲數據的容器。集合容器在不斷向上抽取過程中。出現了集合體系。,刪除將集合中的元素全刪除,清空集合。刪除集合中指定的對象。注意刪除成功,集合的長度會改變。作用用于取集合中的元素。是集合特有的迭代器。是單列集合是雙列集合 集合框架(重點理解):用于存儲數據的容器。特點:1:對象封裝數據,對象多了也需要存儲。集合用于存儲對象。2:對象的個數確定可以使用數組,但是不確定怎...
摘要:循環方法方法不改變原數組方法會給原數組中的每個元素都按順序調用一次函數。篩選出過濾出數組中符合條件的項組成新數組代碼方法方法為數組中的每個元素執行一次函數,直到它找到一個使返回表示可轉換為布爾值的值的元素。 showImg(https://segmentfault.com/img/bV2QTD?w=1600&h=500); 前言 JavaScript 發展至今已經發展出多種數組的循環遍...
摘要:舉個例子,如果你的數組中有一個可枚舉屬性,循環將額外執行一次,遍歷到名為的索引。就連數組原型鏈上的屬性都能被訪問到。某些情況下,可能按照隨機順序遍歷數組元素。 困惑 在練習數組操作的時候,希望實現刪除數組中特定元素(比如刪除字符1)的功能很容易地就想到了利用for循環和splice方法 for (let i = 0; i < hobbies.length; i++) { ...
閱讀 2851·2021-11-19 09:40
閱讀 3709·2021-11-15 18:10
閱讀 3293·2021-11-11 16:55
閱讀 1250·2021-09-28 09:36
閱讀 1665·2021-09-22 15:52
閱讀 3378·2019-08-30 14:06
閱讀 1172·2019-08-29 13:29
閱讀 2319·2019-08-26 17:04