MK
Size: a a a
MK
MN
let arr = ['a', 'a', 'b', 'c', 'b', 'a'];
let res = arr.reduce((accObj, curVal) => ({...accObj, [curVal]: (accObj[curVal] || 0) + 1}), {});
DE
let arr = ['a', 'a', 'b', 'c', 'b', 'a'];
let res = arr.reduce((accObj, curVal) => ({...accObj, [curVal]: (accObj[curVal] || 0) + 1}), {});
{...accObj} копирует все перечисляемые свойства из accObj в новый объект[curVal], чтобы задать этому свойству имя из переменнойMK
{...accObj} копирует все перечисляемые свойства из accObj в новый объект[curVal], чтобы задать этому свойству имя из переменнойMK
let arr = ['a', 'a', 'b', 'c', 'b', 'a'];
let res = arr.reduce((accObj, curVal) => ({...accObj, [curVal]: (accObj[curVal] || 0) + 1}), {});
АБ
IH
АБ
АБ
MP
MP
R
D
IH
IH
D
R
R
R

IH