刪除數組中不符合條件的元素

讓我們來丟棄數組(arr)的元素,從左邊開始,直到回調函數return true就停止。

第二個參數,func,是一個函數。用來測試數組的第一個元素,如果返回fasle,就從數組中拋出該元素(注意:此時數組已被改變),繼續測試數組的第一個元素,如果返回fasle,繼續拋出,直到返回true。

最後返回數組的剩餘部分,如果沒有剩餘,就返回一個空數組。

思路

用 while() 循環,當 func(arr[0]) 不被滿足時移除arr首項。然後繼續遍歷數組剩餘部分。

要注意的是,當 func(arr[0]) 一直不被滿足時,arr首項將被無限多(瀏覽器最大值邊界)次移除,即使arr爲空數組也會循環此操作。爲了保證效率,應加上限制條件arr.length > 0 阻止無限循環的發生。

function drop(arr, func) {
  while(!func(arr[0])&&arr.length>0){
    arr.shift();
  }
  return arr;
}

drop([1, 2, 3], function(n) {return n < 3; });

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章