今天狀況有點糟糕,居然一開始有點看不懂題目,昨天看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 thearri- 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 <= 1000109 <= 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以外的都是),就可以順利解出來。