Посмотрите на функцию Array.prototype.reduce
. Это позволяет вам брать массив, перебирать каждое значение и возвращать новое уменьшенное значение.
function characterCount(arr) {
return arr.reduce((counts, str) => ({
...counts,
[str.length]: (counts[str.length] || 0) + 1
}), {});
}
const counts = characterCount(['apple', 'berry', 'cheery']);
console.log(counts);
В качестве альтернативы вы можете использовать Object.assign
вместо распространения объекта-аккумулятора.
function characterCount(arr) {
return arr.reduce((counts, str) => Object.assign(counts, {
[str.length]: (counts[str.length] || 0) + 1
}), {});
}
const counts = characterCount(['apple', 'berry', 'cheery']);
console.log(counts);