Kata Practice - Calculate Average (JavaScript)

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
2
const findAverage = array => 
array.length === 0 ? 0 : array.reduce((a, b) => a + b, 0) / array.length

解題脈絡

題目有提到如果是空陣列的話要 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 之後也能這樣順利的完成題目!

那我們就下次見ʘ‿ʘ

評論