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

#6 Codewars - Testing 1-2-3 (7 kyu)

題目

原始題目

你的團隊正在開發一個新的高級文本編輯器,你的任務是實現行號功能。

請編寫一個函數,該函數接受一個字符串列表作為輸入,並返回每行字符串前面附帶正確的行號。

行號從 1 開始計數。格式為 n: 字符串。請注意冒號和空格之間的間隔。

示例:(輸入 --> 輸出)
[ ] --> [ ]
["a", "b", "c"] --> ["1: a", "2: b", "3: c"]

拆解流程

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

  • 目標:每行字符串前方需有正確的行號
  • 規則
  1. 資料格式為 n: 字符串,注意冒號和空格之間的間隔
  2. 行號從 1 開始
  3. 傳入空陣列時,會回傳空陣列
  • 方法
  1. 建立一個新陣列,預備放置附帶行號後的字串
  2. 透過陣列方法一筆一筆更動陣列內容,此處使用 map 方法
  3. 可看出索引與行號之間有對應關係,當索引 +1 就會等同於行號

程式撰寫

var number = function (array) {
return array.map((item, i) => {
return `${i + 1}: ${item}`;
});
};

map 方法本身就會回傳一個新陣列,所以不用額外判斷陣列內容是否有值,當傳入 [ ],就會回傳 [ ]

改善寫法

不使用陣列方法,來用迴圈!

var number = function (array) {
let newArr = [];
for (let i = 0; i < array.length; i++) {
newArr.push(`${i + 1}: ${array[i]}`);
}
return newArr;
};

使用 forEach 方法

var number = function (array) {
let newArr = [];
array.forEach((item, i) => {
newArr.push(`${++i}: ${item}`);
});
return newArr;
};

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

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