Sobes.tech
Назад к вопросам
Middle+
1

Реализовать метод Array.prototype.groupBy, который возвращает структурированную версию массива объектов, где каждый ключ является результатом вызова переданной функции, а значение — массивом элементов, соответствующих этому ключу.

Компании, где спрашивали
Яндекс

Ответ от нейросети

sobes.tech AI

Метод groupBy группирует элементы массива по ключу, который вычисляется переданной функцией. Он возвращает объект, где ключи — это результаты функции, а значения — массивы элементов, соответствующих этим ключам.

Пример реализации Array.prototype.groupBy:

if (!Array.prototype.groupBy) {
  Array.prototype.groupBy = function(callback) {
    return this.reduce((acc, item, index, array) => {
      const key = callback(item, index, array);
      if (!acc[key]) {
        acc[key] = [];
      }
      acc[key].push(item);
      return acc;
    }, {});
  };
}

// Пример использования:
const data = [
  { category: 'fruit', name: 'apple' },
  { category: 'vegetable', name: 'carrot' },
  { category: 'fruit', name: 'banana' }
];

const grouped = data.groupBy(item => item.category);
console.log(grouped);
/*
{
  fruit: [ { category: 'fruit', name: 'apple' }, { category: 'fruit', name: 'banana' } ],
  vegetable: [ { category: 'vegetable', name: 'carrot' } ]
}
*/

Такой метод удобен для структурирования данных по определённым признакам.