Kata Practice - Calculate Average (JavaScript)
這個系列會把自己練習過的 Kata 題目記錄下來,希望除了記錄的性質以外也能夠觀察自己撰寫程式邏輯的進化過程。如果有幸看到這邊的話也可以參考一下,再到 Codewars 的網站註冊一個帳號試著玩看看,自己蠻喜歡整個網站的得分和排行榜設定,會讓人越寫越有成就感喔!
題目
Write a function which calculates the average of the numbers in a given list.
Note: Empty arrays should return 0.
自己的解法
1 | const findAverage = array => |
解題脈絡
題目有提到如果是空陣列的話要 return 0
的值,所以就想說用三元運算子來處理這個邏輯。然後如果不是空陣列的話,就先用 reduce
做數字的加總後再除以陣列中的共有幾的值(這就等於陣列的長度的值),這樣就可以算出平均值了。
其他人的解法
1 | const find_average = array => array.reduce((acc, curr) => acc + curr, 0) / array.length || 0; |
選擇記錄這個解法的原因
其實一開始看到這個解法的時候不太知道為什麼最後面要給一個 ||
的運算符,後來用 claude 問了一下得到下面的答覆:|| 0
這部分用於處理空數組的情況。由於空數組的長度為 0,如果直接對空數組求平均值,會導致除以 0 的錯誤。因此,這裡使用了邏輯或運算符 ||
。如果前面的表達式 (即計算出的平均值) 為 falsy 值 (如 NaN, 0, null, undefined, false 或空字符串),則會返回 0。這樣可以避免在處理空數組時出現錯誤。
所以 ||
也可以應用到這樣的情境之下,這是我以前不知道的。
觀念釐清
最近的 Kata 越來越知道該怎麼處理了,因為練習的次數變多,所以看到題目的時候都可以先想好要處理的順序並執行。
希望之後到 6 kyu 之後也能這樣順利的完成題目!
那我們就下次見ʘ‿ʘ