2634.Filter Elements from Array
備註
為個人思考的思緒紀錄,可能有更優解法,歡迎指教討論共好
思考問題
- 要 filter 但不可以用
.filter
- 跑 for 迴圈?來比對是不是 true
- 把符合的數值推回去
列出步驟
- 先建一個空陣列來放 return 的東西
- for 迴圈去跑 arr
宣告 fn (arr[i], i)不需要- 如果 fn (arr[i], i) => true
- 就推回空陣列
寫 pseudocode
- SET returnedArray to []
- i ++ loop arr
- IF fn(arr[i], i) is true THEN
- PUSH arr[i] into returnedArray
returnedArray.push(if fn)
Solve
var filter = function(arr, fn) {
const returnedArray = [];
for (let i = 0; i < arr.length; i ++) {
if (fn(arr[i],i)) {
returnedArray.push(arr[i])
}
}
return returnedArray;
};
反思與優化
- 這次思路對了,好開心 😃 而且也有寫出個大慨,主要是因為參考了前一天的 map 練習 ( Gemini 誇獎我懂得舉一反三)
- 不過錯了也不知道問題點在哪,應該說不知道自己在寫啥ww
- 問了 Gemini 錯誤點是在最後回傳的值,其實像 pseudocode 的步驟寫就可以了,因為原本的 map 是要回傳新的值,而 filter 是原始的值就可以
- Gemini 說就是 pseudocode 的第 4 點沒有寫清楚,造成最後不知道要推什麼東西