2023-09-23|閱讀時間 ‧ 約 3 分鐘

#5 Codewars - Reverse List Order! (8 kyu)

題目

原始題目

在此 kata 中,您將創建一個包含列表並返回具有相反順序的列表的函數。

範例(輸入->輸出)
* [1, 2, 3, 4] -> [4, 3, 2, 1]
* [9, 2, 0, 7] -> [7, 0, 2, 9]

拆解流程

依據題意可整理出以下重點:

  • 此為一個陣列型別,可查找有無反轉陣列的方法
  • 或是使用迴圈,步驟如下:

1. 先建立一個新陣列,預備存放反轉後的結果

2. 取得既有陣列的長度,再透過迴圈遞減索引值,就能將舊陣列的指定值從後到前依序放入到新陣列,最終達到反轉效果。這邊需要特別注意陣列的索引值是從 0 開始,因此最大索引值會比陣列總長度少 1

程式撰寫

function reverseList(list) {
return list.reverse();
}

改善寫法

這次嘗試使用比較迂迴 (?) 的方式撰寫,來練習使用迴圈吧!

function reverseList(list) {
let newArr = [];
for (let i = list.length - 1; i > -1; i--) {
newArr.push(list[i]);
}
return newArr;
}

或是這樣寫:

function reverseList(list) {
let newArr = [];
for (let i = 0; i < list.length; i++) {
newArr.push(list[list.length - 1 - i]);
}
return newArr;
}

又或是使用陣列方法:

function reverseList(list) {
return list.map((item, index) => {
return list[list.length - 1 - index];
});
}



今天就介紹到這裡,如果大家有更好的寫法歡迎一起來討論~

分享至
成為作者繼續創作的動力吧!
© 2024 vocus All rights reserved.