歡迎您光臨本站 註冊首頁

JS刪除數組指定值常用方法詳解

←手機掃碼閱讀     zmcjlove @ 2020-06-10 , reply:0

一. 刪除數組中所有指定值

先看一種危險的方式:

   {            if (item == 3) {              arr.splice(i, 1); // 從下標 i 開始, 刪除 1 個元素            }          })          console.log(`刪除之後的數組:${arr}`);        }" _ue_custom_node_="true">

 

輸出結果:

輸出的結果中,只刪除了一個3,這是因為splice方法刪除數組一個指定值之後,數組發生改變,後續的值向前挪動一個位置,在接下來的循環遍歷中,後面的3的下標由原本的5變成了4,這就導致刪除操作之後,接著找下標為5的值的時候,找不到後面的值3了,而從值為4的元素接著遍歷,當要刪除的值不確實是1個的時候,這種遍歷刪除是危險的方式;

1. 如果使用splice方法循環遍歷的方式刪除指定值,一種保險的方式是逆向遍歷:

   -1; i--) {            if (arr[i] == 3) {              arr.splice(i, 1);            }          }          console.log(`刪除之後的數組:${arr}`);        }" _ue_custom_node_="true">

 

輸出結果:

2. 使用filter方法過濾掉指定值:

   item != 3); // 過濾掉值不為3,返回新數組          console.log(`filter方法操作之後的數組:${arr}`);        }" _ue_custom_node_="true">

 

輸出結果:

注意: filter方法不改變原數組,只是返回一個新數組;

二. 刪除指定一個值

如果確定要刪除的值只有一個,除了遍歷查找刪除之後,還可以使用some方法:

   {            if (item == 2) {              arr.splice(i, 1);              return true            }          })          console.log(`刪除之後的數組:${arr}`);        }" _ue_custom_node_="true">

 

輸出結果:

注意: some方法找到符合條件的值手動返回true之後,不再接著遍歷(如果將some替換成forEach,return是不起作用的);

除此之外,還可以使用findIndex方法:

   item == 3);          arr.splice(a, 1);          console.log(`刪除之後的數組:${arr}`);        }" _ue_custom_node_="true">

 

輸出結果:

注意: findIndex只找到第一個符合條件的下標,找不到就返回 -1;


[zmcjlove ] JS刪除數組指定值常用方法詳解已經有248次圍觀

http://coctec.com/docs/javascript/show-post-237894.html