透過屬性匹配從數組中高效刪除對象
要根據對象的屬性值選擇性地從數組中刪除對象,至關重要的是要避免刪除期間修改陣列長度的潛在問題。這裡有兩個有效的方法:
方法1:遞減循環計數器
如果您使用splice 來刪除對象,數組的長度會隨著每次刪除而減小,可能會導致循環中的錯誤行為。要解決這個問題,只要刪除一個對象,循環計數器 (i) 就會減 1。
方法 2:覆蓋保留元素
透過覆蓋要保留的元素在迭代期間,您可以避免線性時間刪除並更有效地調整數組大小。使用像 end 這樣的變數來追蹤最後保留元素的索引,並簡單地覆蓋數組中該索引處的元素。
現代實踐:雜湊集
在現代運行時,您可以利用雜湊集更有效地執行查找。透過從要刪除的物件屬性清單中建立 Set,您可以在恆定時間內過濾掉不需要的物件。
通用就地濾波函數
為了進一步提高程式碼的可重用性,請考慮建立一個通用函數來就地濾波陣列。這個函數,filterInPlace,接受一個陣列和一個定義過濾邏輯的謂詞函數。它遵循上面概述的相同原則來有效地移除物件。
以上是如何基於屬性匹配高效地從數組中移除物件?的詳細內容。更多資訊請關注PHP中文網其他相關文章!