在 JavaScript 中從陣列中形成序列
假設我們有一個類似於此的已排序數字陣列,其中可以有連續數字。
const arr = [1, 2, 3, 5, 7, 8, 9, 11];
我們需要編寫一個 JavaScript 函式,該函式接受這樣一個數組。
我們的函式應該為這個陣列形成一個序列。該序列應使得對於陣列的所有連續元素,只需要編寫起始數字和結束數字即可,用破折號 (-) 代替其間的數字,同時保持所有其他數字不變。
因此,對於上述陣列,輸出應該如下所示:
const output = '1-3,5,7-9,11';
示例
相應的程式碼如下所示:
const arr = [1, 2, 3, 5, 7, 8, 9, 11];
const buildSequence = (arr = []) => {
let pointer;
return arr.reduce((acc, val, ind) => {
if (val + 1 === arr[++ind]) {
if (pointer == null ) {
pointer = val;
};
return acc;
};
if (pointer) {
acc.push(`${pointer}-${val}`);
pointer = null;
return acc;
}
acc.push(val);
return acc;
}, []).join(',');
}
console.log(buildSequence(arr));輸出
控制檯中將輸出以下內容:
1-3,5,7-9,11
廣告
資料結構
網路
RDBMS
作業系統
Java
iOS
HTML
CSS
Android
Python
C 程式設計
C++
C#
MongoDB
MySQL
Javascript
PHP