Kata Practice - Reverse words (JavaScript)

Kata Practice - Reverse words (JavaScript)

這個系列會把自己練習過的 Kata 題目記錄下來,希望除了記錄的性質以外也能夠觀察自己撰寫程式邏輯的進化過程。如果有幸看到這邊的話也可以參考一下,再到 Codewars 的網站註冊一個帳號試著玩看看,自己蠻喜歡整個網站的得分和排行榜設定,會讓人越寫越有成就感喔!

題目

Complete the function that accepts a string parameter, and reverses each word in the string. All spaces in the string should be retained.

Examples
1
2
"This is an example!" ==> "sihT si na !elpmaxe"
"double spaces" ==> "elbuod secaps"

自己的解法

1
2
3
4
5
6
7
8
 const reverseWords = (str) => {
const splitWordsArray = str.split(' ')
const reverseArray = []
splitWordsArray.forEach((element) => {
reverseArray.push(element.split('').reverse().join(''))
})
return reverseArray.join(' ')
}

解題脈絡

一樣先把預設的 function 改成 arrow function 後,再將每個單字使用 split 函式分隔開後並使用 reverse 反轉完再使用 join 組合為原本的單字。
最後一步就是把所有的單字在組成原來題目提供的一個句子 string 就大功告成囉!

其他人的解法

1
2
3
function reverseWords(str) {
return str.split("").reverse().join("").split(" ").reverse().join(" ");
}

選擇記錄這個解法的原因

其實可以直接將字串直接做 split 和 reverse 後最後再次 join 即可,不用向我的解法那麼複雜。

觀念釐清

寫到現在會發現,雖然有更多簡單和簡潔的寫法,但是程式碼不只是要讓功能完成而已,最重要的還有可讀性。因為要考量到這個程式碼可能會有其他團隊成員要維護,又或者是以後新進的同仁或是接手的人,所以寫的越精簡不一定越好,能夠讓不同程度的人都看懂這段 code 或是這個 function 要達成什麼目的才是一個好的程式碼撰寫習慣~

那我們就下次見ʘ‿ʘ

評論