Помогите преобразовать массив в объект массивов с ключом каждого из них

У меня есть массив:

["Августина Екатерина", "Августовский Борис", "Богатова Августина"]

, мне нужно его отсортировать в объект такого вида:

{
  А: ["Августина Екатерина", "Августовский Борис"],
  Б: ["Богатова Августина"]
}

Массив динамический, формируется после запроса, суть - сгруппировать по первой букве фамилии чтобы потом списком поиск отображать.


Ответы (1 шт):

Автор решения: yar85

const input = ["Августина Екатерина", "Августовский Борис", "Богатова Августина"];

const output = input.reduce((rslt, val) => {
  const key = val.slice(0, 1).toUpperCase(),                           // [0] и charAt(0) менее надежны чем slice, но можно и их использовать
        arr = Array.isArray(rslt[key]) ? rslt[key] : (rslt[key] = []); // получаем ссылку на значение целевого свойства (на массив) в объекте, создав такое свойство при необходимости
  arr.push(val);
  return rslt;
}, {});

console.log(output);

→ Ссылка