Разделение массива на основе функции

Beginner

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

Введение

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

Функция для разделения массива на две группы

Чтобы разделить массив на две группы в зависимости от результата заданной функции, следуйте этим шагам:

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

Вот код:

const bifurcateBy = (arr, fn) =>
  arr.reduce(
    (acc, val, i) => (acc[fn(val, i) ? 0 : 1].push(val), acc),
    [[], []]
  );

Например, если вы вызовете bifurcateBy(['beep', 'boop', 'foo', 'bar'], x => x[0] === 'b'), функция вернет [ ['beep', 'boop', 'bar'], ['foo'] ].

Резюме

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