跳至主要内容

2634.Filter Elements from Array

備註

為個人思考的思緒紀錄,可能有更優解法,歡迎指教討論共好

思考問題

  1. 要 filter 但不可以用 .filter
  2. 跑 for 迴圈?來比對是不是 true
  3. 把符合的數值推回去

列出步驟

  1. 先建一個空陣列來放 return 的東西
  2. for 迴圈去跑 arr
  3. 宣告 fn (arr[i], i) 不需要
  4. 如果 fn (arr[i], i) => true
  5. 就推回空陣列

寫 pseudocode

  1. SET returnedArray to []
  2. i ++ loop arr
  3. IF fn(arr[i], i) is true THEN
  4. PUSH arr[i] into returnedArray
  5. 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 點沒有寫清楚,造成最後不知道要推什麼東西