前言:
關於陣列移除,印象之前在開發時候就有找過如何移除特定 ITEM
。但今天測試時後才發現那時候眼睛業障重,根本沒有移除。所以今天就順便紀錄一下如何移除指定 ITEM
資料。
參考資料:
Array.prototype.includes()
9 Ways to Remove Elements From A JavaScript Array - Plus How to Safely Clear JavaScript Arrays
Comparing and Filtering two arrays
情境如下:
我今天有一筆陣列
let array = ["20210607001","20210607003","20210607002"]
當今天使用者在刪除資料時,假設他輸入資料如"20210607001"
,此時我的 array 裡面有這筆資料,這時候我想要移除這筆資料,該怎麼處理?
更新寫法20210630:
原本以為昨天測試完後,程式碼應該就沒問題。但今天再測試時候,又發現昨天寫法會動到原本既有的 Array ,主要原因在於我目前情況為兩個陣列長度不同,而我在 splice
資料時候因為 index
不同,會刪除錯筆資料。所以今天又改寫一版。希望沒問題了吧!?
1 | function DeleteOldArray(data,ColumnName) { |
延伸想法
如果我今天不是兩個 array 作比對的話,是多於兩個的話,我是否可以在傳入參數時,另外一個參數為陣列集合或是或把兩個陣列直接合併( concact
)、展開運算式
原本想法如下20210629:
我原本想說陣列本身有沒有可以直接移除特定 ITEM
方法,但我後來發現沒有。進而想到可以用 Filter
跟 includes
做搭配處理,寫法如下
1 | let array = ["20210607001","20210607003","20210607002"] |
但這種方法只適用於一次移除一筆且資料為 KEY 值,如果是多筆有重複就會發生重複資料序號往前,造成資料沒有篩選成功!例如:
1 | let arr = [1, 2, 3, 4, 5, 5, 6, 7, 8, 5, 9, 0]; |
補充
剛看了參考文章,發現其實也可以把 塞選寫成一個 Function ,每次都可以直接呼叫!例如:
1 | function arrayRemove(arr, value) { |