[Array][Easy] Filter
🔸 題目描述
給定一個整數陣列 arr
和一個過濾函式 fn
,回傳一個過濾後的陣列 filteredArr
。
函式 fn
接受一個或兩個參數:
arr[i]
是來自arr
的數字i
是arr[i]
的索引
filteredArr
應該只包含來自 arr
的元素,其中表達式 fn(arr[i], i)
評估為真值。真值是指 Boolean(value)
返回 true
的值。此題不得使用 JavaScript 內建的 Array.filter
方法來解。
💭 分析與思路
問題釐清
- 傳入的陣列的值是否限制為只有 number
- 其他相對明確,就是作出一個類似 array.filter 的方法即可
提出測試案例
- 能通過基本測資
- 能確認 fn 傳不傳第二個參數的正確性
- 能列出一些 edge case,如空陣列、fn 結果都不符合等狀況
提出思路
- 用 for 迴圈對 arr 迭代,並執行 fn 確認是否為 truthy,是的話則放入準備回傳的結果陣列
實作
雖然一開始限制只用 number,但發現其實也是改成泛型可以支援各種型別:
或是想用 reduce 縮寫也可: