Блок: Фильтрация

Блок "Фильтрация" используется для отбора данных из исходного массива, которые соответствуют заданным условиям. Это позволяет сократить объем данных для дальнейшей обработки, выделяя только те элементы, которые удовлетворяют определённым критериям.
Основные параметры блока
Название блока:
Уникальное имя, которое идентифицирует задачу фильтрации в текущем сценарии, например: "Фильтрация по локации".
Исходный массив:
Переменная, содержащая данные для фильтрации. Например:
carList
(список автомобилей).
Массив назначения:
Переменная, в которую будет сохранён результат фильтрации. Например:
carList2
.
Условие для фильтрации:
JavaScript-условие, определяющее логику отбора данных. Пример:
javascript this.gptResult.locations?.find(location => this.contains(`${this.item.location}`, location))
Здесь происходит проверка, соответствует ли локация элемента исходного массива массиву локаций из результата предыдущего шага (
gptResult.locations
).
Пример использования
Сценарий: Фильтрация автомобилей по локации
Исходные данные (массив
carList
):json [ {"model": "Lada Vesta", "color": "Red", "location": "Moscow"}, {"model": "Toyota Camry", "color": "White", "location": "Saint Petersburg"}, {"model": "Hyundai Solaris", "color": "Black", "location": "Moscow"} ]
Условие фильтрации:
Проверяем, содержится ли
location
элемента массива в массиве локаций, полученном из предыдущего шага (gptResult.locations
).
Пример результата фильтрации (массив
carList2
):json [ {"model": "Lada Vesta", "color": "Red", "location": "Moscow"}, {"model": "Hyundai Solaris", "color": "Black", "location": "Moscow"} ]
Возможности блока
Гибкость настройки условий фильтрации: Позволяет использовать сложные JavaScript-выражения для отбора данных.
Динамическая фильтрация: Условия могут опираться на результаты работы предыдущих блоков, таких как ИИ Запрос.
Сохранение результата: Результаты фильтрации сохраняются в отдельный массив, что позволяет продолжать их обработку в других блоках.
Пример варианта №1

- Разбор примера условия фильтрации
javascript this.gptResult.locations?.find(location => this.contains(`${this.item.location}`, location))
- Пошаговое объяснение
this.gptResult.locations
Что это такое? Это массив локаций, который был получен на предыдущих этапах. Пример:
javascript this.gptResult.locations = ["Moscow", "Saint Petersburg", "Kazan"];
?.
(опциональная цепочка): Проверяет, существует ли объектlocations
. Если он отсутствует или равенundefined
, выражение не вызывает ошибку, а просто возвращаетundefined
.
.find(location => ...)
Что это делает? Метод
find
ищет первый элемент в массивеlocations
, который удовлетворяет указанному условию.Пример работы:
javascript ["Moscow", "Saint Petersburg", "Kazan"].find(location => location === "Moscow"); // Вернёт "Moscow"
this.contains(
${this.item.location}, location)
Что это такое? Проверка на соответствие текущей локации элемента (
this.item.location
) одному из значений в массивеlocations
.Аргументы:
${this.item.location}
: локация текущего элемента массива, который фильтруется. Например,"Moscow"
.location
: текущий элемент массиваlocations
, который проверяется методомfind
.
Метод
this.contains
: Проверяет, содержит ли строка локации элемента (this.item.location
) значение из массиваlocations
. Например:javascript this.item.location = "Moscow Region"; location = "Moscow"; this.contains("Moscow Region", "Moscow"); // Вернёт true
Пример работы всего выражения:
Исходные данные:
javascript this.gptResult.locations = ["Moscow", "Saint Petersburg", "Kazan"]; this.item.location = "Moscow Region";
Проверка:
javascript this.contains("Moscow Region", "Moscow"); // Вернёт true
Результат:
Метод
find
вернёт"Moscow"
, так как он удовлетворяет условию.
Пример в контексте
Исходные данные (
carList
):javascript [ { model: "Lada Vesta", color: "Red", location: "Moscow Region" }, { model: "Toyota Camry", color: "White", location: "Saint Petersburg" }, { model: "Hyundai Solaris", color: "Black", location: "Kazan" } ]
Локации из
this.gptResult
:javascriptК this.gptResult.locations = ["Moscow", "Kazan"];
Условие:
javascript this.gptResult.locations?.find(location => this.contains(`${this.item.location}`, location));
Результат фильтрации:
javascript [ { model: "Lada Vesta", color: "Red", location: "Moscow Region" }, { model: "Hyundai Solaris", color: "Black", location: "Kazan" } ]
В массив назначения попадут только те элементы, где
location
элемента соответствует значениям в массивеthis.gptResult.locations
.
Last updated