zenithxxl
@zenithxxl
Веб-разработчик

Как отсортировать объекты по массивам в JS?

у меня есть массив:
const array = [
  {
    name: "Егор", role: "Режиссер"
  },
  {
    name: "Паша", role: "Сценарист"
  },
  {
    name: "Маша", role: "Продюсер"
  },
  {
    name: "Лена", role: "Продюсер"
  },
  {
    name: "Серёжа", role: "Оператор"
  },

]

И я хочу отсортировать всех по отдельным массивам, то есть массив Оператор, Режиссер и т.д. Я уже пробовал просто отсортировать по роли, но я получаю только один массив с одной ролью. А я хочу получить неопределённое количество массивов(т.к я не знаю, сколько будет приходить объектов и сколько ролей).

Текущий код:

const findObj = { role: "Оператор" }

const result = humans.filter(human =>
	Object.keys(findObj).every(key => human[key] === findObj[key])
)

console.log(result) // [ { name: 'Серёжа', role: 'Оператор' } ]
  • Вопрос задан
  • 107 просмотров
Решения вопроса 1
Seasle
@Seasle Куратор тега JavaScript
https://www.30secondsofcode.org/js/s/function-base...
const groupBy = (collection, extractKey) => 
  collection.reduce((acc, item) => {
    const key = extractKey(item);
    acc[key] ??= [];
    acc[key].push(item);
    return acc;
  }, {});

const data = groupBy(array, (person) => person.role);

UPD: Можно использовать Object.groupBy (совсем забыл про него) если устраивает поддержка.
Object.groupBy(array, (person) => person.role);
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы
21 нояб. 2024, в 19:31
500 руб./за проект
21 нояб. 2024, в 19:28
200000 руб./за проект