JSFiddle - React, Tailwind, and code Playground
by Artem
JavaScript
'use strict';
const zip1 = str =>
str.match(/(\w)\1*/g).reduce((res, charSeq) => {
const char = charSeq.charAt(0);
const length = charSeq.length;
return res += `${length}${char}`;
}, '');
console.log(zip1('aaaabaaa')); // 4ab3a
const zip2 = str => {
if (str.length === 1) return str;
const [f, s, ...rest] = str;
if (f === s) {
return 1 + zip2(s + rest);
}
return zip2(str);
};
console.log(zip2('aaaabaaa')); // 4ab3a