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