Reputation: 33
I want to transform this array ['1','3','+','8','0','/','5','7','0']
into ['13','+','80','/','570']
I tried this:
let valu = val.value;
let tab1 = [];
if(!isNaN(valu)) {
tab1.push(valu)
}
else {
tab.push(tab1)
tab1 = [];
tab.push(valu)
}
Upvotes: 2
Views: 48
Reputation: 386786
You could test if the avtual value has only digits and if the last stored valu has digits, then add the avual value. Otherwise push the value to the result set.
const
hasDigits = c => /^\d+$/.test(c),
array = ['1', '3', '+', '8', '0', '/', '5', '7', '0'],
result = array.reduce((r, v) => {
if (hasDigits(v) && hasDigits(r[r.length - 1] || '')) r[r.length - 1] += v;
else r.push(v);
return r;
}, []);
console.log(result);
Upvotes: 4