Группировка элементов массива с использованием функций

Beginner

This tutorial is from open-source community. Access the source code

Введение

В этом практическом занятии мы научимся группировать элементы массива на основе заданной функции с использованием JavaScript. Мы будем использовать Array.prototype.map() и Array.prototype.reduce(), чтобы создать объект, ключи которого будут получены из результатов сопоставления. В конце этого практического занятия вы глубоко поняли, как группировать и классифицировать данные в JavaScript.

Как сгруппировать элементы массива

Если вы хотите потренироваться в написании кода, вы можете начать с открытия Терминала/SSH и ввода node. Когда вы будете готовы, вы можете сгруппировать элементы массива на основе заданной функции, выполнив следующие шаги:

  1. Используйте Array.prototype.map(), чтобы сопоставить значения массива с именем функции или свойства.
  2. Используйте Array.prototype.reduce(), чтобы создать объект, ключи которого будут получены из результатов сопоставления.

Вот пример кода:

const groupBy = (arr, fn) =>
  arr
    .map(typeof fn === "function" ? fn : (val) => val[fn])
    .reduce((acc, val, i) => {
      acc[val] = (acc[val] || []).concat(arr[i]);
      return acc;
    }, {});

Для проверки кода вы можете использовать следующие примеры:

groupBy([6.1, 4.2, 6.3], Math.floor); // {4: [4.2], 6: [6.1, 6.3]}
groupBy(["one", "two", "three"], "length"); // {3: ['one', 'two'], 5: ['three']}

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

Резюме

Поздравляем! Вы завершили практическое занятие "Сгруппировать элементы массива". Вы можете выполнить больше практических занятий в LabEx, чтобы улучшить свои навыки.