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

JavaScriptJavaScriptBeginner
Практиковаться сейчас

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

💡 Этот учебник переведен с английского с помощью ИИ. Чтобы просмотреть оригинал, вы можете перейти на английский оригинал

Введение

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


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL javascript(("JavaScript")) -.-> javascript/AdvancedConceptsGroup(["Advanced Concepts"]) javascript(("JavaScript")) -.-> javascript/BasicConceptsGroup(["Basic Concepts"]) javascript/BasicConceptsGroup -.-> javascript/variables("Variables") javascript/BasicConceptsGroup -.-> javascript/data_types("Data Types") javascript/BasicConceptsGroup -.-> javascript/comp_ops("Comparison Operators") javascript/AdvancedConceptsGroup -.-> javascript/higher_funcs("Higher-Order Functions") subgraph Lab Skills javascript/variables -.-> lab-28170{{"Разделение массива на основе функции"}} javascript/data_types -.-> lab-28170{{"Разделение массива на основе функции"}} javascript/comp_ops -.-> lab-28170{{"Разделение массива на основе функции"}} javascript/higher_funcs -.-> lab-28170{{"Разделение массива на основе функции"}} end

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

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

  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, чтобы улучшить свои навыки.