Разбиение массивов с использованием метода reduce в JavaScript

Beginner

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

Введение

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

Алгоритм разбиения массива

Чтобы разбить массив на части, следуйте шагам:

  1. Откройте Терминал/SSH и введите node, чтобы начать практиковаться в написании кода.
  2. Примените заданную функцию fn к каждому значению в заданном массиве arr.
  3. Разбивайте массив каждый раз, когда fn возвращает новое значение.
  4. Используйте Array.prototype.reduce(), чтобы создать накопительную переменную, которая будет содержать результирующий массив и последнее значение, возвращаемое fn.
  5. Используйте Array.prototype.push(), чтобы добавить каждое значение из arr в соответствующую часть накопительного массива.
  6. Верните результирующий массив.

Вот кодовая реализация:

const partitionBy = (arr, fn) =>
  arr.reduce(
    ({ res, last }, v, i, a) => {
      const next = fn(v, i, a);
      if (next !== last) res.push([v]);
      else res[res.length - 1].push(v);
      return { res, last: next };
    },
    { res: [] }
  ).res;

Пример использования:

const numbers = [1, 1, 3, 3, 4, 5, 5, 5];
partitionBy(numbers, (n) => n % 2 === 0); // [[1, 1, 3, 3], [4], [5, 5, 5]]
partitionBy(numbers, (n) => n); // [[1, 1], [3, 3], [4], [5, 5, 5]]

Резюме

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