Подкину и я свои 5коп...
function f(ar) {
const o = ar.reduce((o, v) => (typeof v === 'number'
? o.n += v
: (o.t += (o.n || '') + v, o.n = 0)
, o), {t: '', n: 0})
return o.t + (o.n || '')
}
console.log(f([1, 1, 'Q', 1, 'R'])); //2Q1R
console.log(f([1, 1, 1, 'Q', 1, 1, 'R', 1])); // 3Q2R1
console.log(f([1, 1, 'N', 'W', 1, 1, 1, 'Q'])); // 2NW3Q
/*****/
console.log(f([1, 11, 'N', 'W', 3, 55, 0, 'Q'])); // 12NW58Q
console.log(f(['A', 1, 21, 'N', 'W', 3, 55, 0, 'Q', 4])); // A22NW58Q4
console.log(f(['A', 'CDE', 1, 21, 'N', 'W', 3, 'Q', 4])); // ACDE22NW3Q4
Но вариант с регуляркой явно не переплюнуть...
![Laugh](images/smilies/laugh.gif)