Is there a solution to reorganize the following array in javascript?

Viewed 47

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)
       
   }
1 Answers

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);

Related