字串是這樣的:
const string = '1-2-3-4-5-6-7-...-n';
我需要一個這樣的陣列:
const arr = ['1', '1-2', '1-2-3', '1-2-3-4', '1-2-...-n'];
到目前為止,我已經進入了這個:
const str = '1-2-3';
const arr = []; let actualValue = '';
const splitArray = str.split('-');
for (let i = 0; i < splitArray.length; i ) {
if (actualValue)
actualValue = actualValue '-' splitArray[i];
else
actualValue = splitArray[i];
arr.push(actualValue);
}
uj5u.com熱心網友回復:
也許這個解決方案適合你?
const result = "1-2-3-4-5-6-7-8-9".split("-").reduce((prev, curr) => {
const last = prev.slice(-1);
last.push(curr);
prev.push(last.join("-"));
return prev;
}, []);
console.log(result);
uj5u.com熱心網友回復:
我更喜歡
const str = '1-2-3';
const arr = []; let actualValue = '';
const splitArray = str.split('-');
if (splitArray.length) {
actualValue = splitArray[0];
arr.push(actualValue);
}
for (let i = 1; i < splitArray.length; i ) {
actualValue = actualValue '-' splitArray[i];
arr.push(actualValue);
}
console.log(arr);
以減少比較次數。
uj5u.com熱心網友回復:
不需要拆分,只需一點算術。
這里使用String#slice()和for回圈push()
const string = '1-2-3-4-5-6-7';
const result = [];
const len = Math.ceil(string.length / 2);
for (let i = 0; i < len; i ) {
result.push(string.slice(0, 2 * i 1));
}
console.log(result);
或while回圈unshift()
const string = '1-2-3-4-5-6-7';
let str = string;
let result = [];
while (str.length) {
result.unshift(str);
str = str.slice(0, -2);
}
console.log(result);
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/323697.html
標籤:javascript
