the string is something like this:
const string = '1-2-3-4-5-6-7-...-n';
and I need an array like this:
const arr = ['1', '1-2', '1-2-3', '1-2-3-4', '1-2-...-n'];
I have go into this so far:
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);
}
Maybe this solution will suit you?
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);
I prefer
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);
to reduce the number of comparisons.