題目
你的團隊正在開發一個新的高級文本編輯器,你的任務是實現行號功能。
請編寫一個函數,該函數接受一個字符串列表作為輸入,並返回每行字符串前面附帶正確的行號。
行號從 1 開始計數。格式為 n: 字符串。請注意冒號和空格之間的間隔。
示例:(輸入 --> 輸出)
[ ] --> [ ]
["a", "b", "c"] --> ["1: a", "2: b", "3: c"]
拆解流程
依據題意可整理出以下重點:
- 目標:每行字符串前方需有正確的行號
- 規則
- 資料格式為
n: 字符串
,注意冒號和空格之間的間隔 - 行號從 1 開始
- 傳入空陣列時,會回傳空陣列
- 方法
- 建立一個新陣列,預備放置附帶行號後的字串
- 透過陣列方法一筆一筆更動陣列內容,此處使用 map 方法
- 可看出索引與行號之間有對應關係,當索引 +1 就會等同於行號
程式撰寫
var number = function (array) {map 方法本身就會回傳一個新陣列,所以不用額外判斷陣列內容是否有值,當傳入 [ ],就會回傳 [ ]
return array.map((item, i) => {
return `${i + 1}: ${item}`;
});
};
改善寫法
不使用陣列方法,來用迴圈!
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;
};
今天就介紹到這裡,如果大家有更好的寫法歡迎一起來討論~