今天狀況有點糟糕,居然一開始有點看不懂題目,昨天看NFL直撥看太晚了,比平常晚了1個半小時睡覺><”
Day6: Filter Elements from Array
Given an integer array arr
and a filtering function fn
, return a filtered array filteredArr
.
The fn
function takes one or two arguments:
arr[i]
- number from thearr
i
- index ofarr[i]
filteredArr
should only contain the elements from the arr
for which the expression fn(arr[i], i)
evaluates to a truthy value. A truthy value is a value where Boolean(value)
returns true
.
Please solve it without the built-in Array.filter
method.
問題難度:Easy
問題限制:
0 <= arr.length <= 1000
109 <= arr[i] <= 109
我的解題思路
題目要求我們要回傳真值,先來確認一下這樣子回傳出來的是什麼:
1 | var filter = function(arr, fn) { |
回傳 [0,0,1,1]。
OK,感覺沒錯跟我們想要出現的答案一樣,接下來就是加入if的判斷式:
1 | var filter = function(arr, fn) { |
其他解法
使用forEach:
1 | var filter = function(arr, fn) { |
使用Array.map and Array.reduce:
1 | var filter = function(arr, fn) { |
結語
只要了解到什麼是真值(也就是除了:false
、0
、-0
、0n(BigInt zero)
、'' (empty string)
、null
、undefined
、NaN
以外的都是),就可以順利解出來。