# Фильтрация и поиск элементов массива

Функция позволяет искать (или фильтровать) элементы массива.

<figure><img src="https://lh3.googleusercontent.com/Xn0S3O78ZZOcnpd5drF37zFxmBf6RuUoPHiWiMrZIK8NHCa6fWoRHYbVfX2AAJKAYLuay7Pmh9nq1apx2iA4HIq9gan3855YqzvhRLwfaQRYs8IZ0njL3R7Ab8Z1wBmauE9LSuy-zXGXJ3OUw4RFuZ4" alt=""><figcaption></figcaption></figure>

«Массив данных». В него записывается изначальный массив, в котором нужно производить поиск или фильтрацию.

Можно записать как сам массив в формате: `["Один", "Два", "Три"]`

Так и переменную, в которой содержится этот массив. К примеру, `{var:massive}`

<figure><img src="https://lh5.googleusercontent.com/xBMQ6n4Kq65u_SEciModfN7PxBNLFN-LUCEJjPSn2hUegi9kXO0OC31ca8z4yjjJgIbaPjtRUwAZW-ZhZicb4JsP2fxqoWR1DhWxVV5BFHiy79fokCgVTjsxpm9-PYFoRDt9dY5QYRmhhoWkGnpeA9g" alt=""><figcaption></figcaption></figure>

«Тип данных». Изначально массив находится в формате JSON. Чтобы произвести поиск или фильтрацию, нужно перевести информацию в более простой тип данных.

Вы можете перевести данные из массива в <mark style="background-color:purple;">текст, число или True/False.</mark>

<figure><img src="https://lh4.googleusercontent.com/JBv7-JmQWg6upgEUINSB-5p85-Cngn6yVmrqvc2ThZkC89FJ34FB9J-KOHKfy4Sya9J1IUur1S1cAMg2gwC_FYkKQDvJuQeNk1rXRPiGgy5tQMkkr5_iTET8gwXMUdsaU_IzSwqxRvTxDJ041kTweFg" alt=""><figcaption></figcaption></figure>

«Метод сравнения». Здесь мы можем выбрать метод для сравнения данных.

Сравнивается «Искомое значение» с содержимом массива, который мы добавили вначале.

<details>

<summary>Подробности про методы сравнения с примерами</summary>

**Равен** — полностью совпадает. _Пример: Поиск по значению "Multy" найдёт только те элементы массива, которые полностью совпадают со значением "Multy"._

**Содержит** — включает значение. Пример: Поиск по значению "Multy" можно найти в элементе массива "Multy — сервис для автоматизации и геймификации".

**Начинается с** — почти как содержит, но элемент должен начинаться с искомого значения. _Пример: Поиск по значению "Multy". Элемент массива "Multy — сервис для автоматизации и геймификации" — подойдёт под параметры поиска. А вот "Настройте автоматизацию в сервисе Multy" — уже не подойдёт._

**Заканчивается на** — аналогично с предыдущим, только элемент должен заканчиваться на искомое значение. _Из примера выше, поиск по значению "Multy" найдёт элемент массива "Настройте автоматизацию в сервисе Multy"._

**Регулярное выражение** — последовательность символов, определяющая шаблон поиска. Это поиск не конкретного значения _("Multy", 7, "автоматизация")_, а определённого набора данных _(номера телефона, email, набора символов или чисел по определённым правилам)_.

**Содержит телефон** — встроенное регулярное выражение, которое будет искать элементы массива, которые включают в себя российский номер телефона. Если нужно номер в международном формате, то лучше использовать регулярное выражение `(7|38|8|0|37)(-|\s|(|)(\d|\d.|\d..|\d...){9}`&#x20;

**Содержит email** — встроенное регулярное выражение, которое будет искать элементы массива, которые включат в себя email.

**Значение - число** — встроенное регулярное выражение, которое будет искать элементы массива, которые состоят из чисел. _Примечание: Если число записано как строка, то этот метод сравнения ничего не найдёт. Пример: \[1,3,4] — это числа. \["1","3","4"] — это строки._

**Значение - целое число** — встроенное регулярное выражение, которое будет искать элементы массива, которые состоят из целых чисел. _Пример: \[1.4, 5, 4.9] — из такого массива этот метод сравнения найдёт только число 5. Метод сравнения «Значение - число» нашёл бы все числа из этого массива._

</details>

<figure><img src="https://2249269224-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FLmohxxJlESle3zPCwerN%2Fuploads%2FF2dslgpcaJtbJIQSUXDe%2Fimage.png?alt=media&#x26;token=fd7d48c2-1418-4253-8bb3-a00eaf5645c2" alt=""><figcaption></figcaption></figure>

«Искомые значения». Здесь мы прописываем то, что хотим найти.

<figure><img src="https://2249269224-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FLmohxxJlESle3zPCwerN%2Fuploads%2FNE7GDJNNbNkHTSEvl9iT%2Fimage.png?alt=media&#x26;token=cb155ff7-e51c-4c23-964e-f3033dec4c5a" alt=""><figcaption></figcaption></figure>

Можно добавлять в список как сами значения, так и переменные, в которых будет содержаться конкретное значение (НЕ массив).

<figure><img src="https://lh3.googleusercontent.com/wxfrMct-3caeeeYwXUJdd60K1Xn9unAQDE6jrkiPzrEjA_dldhMS34ZjIYeFSQY0dhaeEJMTpXYSIioiU2gTo6stRvG6ouZMzuE2VFhMmjf4w0MWDzy8KqmiQcnCWNikXhkflrB1ezKJy6OKgHPG3bI" alt=""><figcaption></figcaption></figure>

«Результат работы программы». То, что функция в итоге выдаст вам в качестве результата.

<details>

<summary>Подробности про результаты работы с примерами</summary>

**Массив найденных элементов**. Выдаст массив, в котором будут содержаться все найденные элементы. В формате \["Один", "Два", "Три"]



**Массив найденных индексов.**\
&#xNAN;_&#x418;ндекс — это номер элемента в массиве, начиная с нуля._

К примеру, в массиве \["Один", "Два", "Три"] элемент «Один» имеет индекс — 0, «Два» — 1, а «Три» — 2.

Соответственно, этот формат результата работы выдаст массив с индексами, к примеру: \["0", "3", "5"]



**Первый найденный объект**. Выдаст первый объект, который нашёл.



**Индекс первого найденного объекта**. Выдаст индекс первого объекта, который был найден. _К примеру, у нас массив \[“Красный”, “Зелёный”, “Синий”]. Ищем «Синий». В этом случае функция выдаст индекс: 2 (отсчёт индексов всегда начинается с 0, поэтому третий по счёту элемент будет с индексом 2)._



**Количество вхождений.**

Сколько раз в массиве был найден элемент, соответствующий условиям, в виде положительного числа.



**Полный отчёт по поиску.**

Очень удобен для тестов. Формирует словарь с полным отчётом найденных элементов. _Пример словаря:_

`{"indexes":[1,2],"values":["Два","Три"],"count":2}`

</details>

Дополнительные параметры для этой функции

<figure><img src="https://lh5.googleusercontent.com/x0hQdOUK5vXI85iICDAzpjUrJscRYVqk5F_zUemnMlEVO-dHLJUDIVz3iTZyMVWcJPJ176s1yjD9hiklIXir3dXK7FmfDZSsEPAA7VpjG7Z-Mp89MYqWTYR-x0NXFxqtQoFMLD6wbauLrw1S2aq97Io" alt=""><figcaption></figcaption></figure>

«Учитывать регистр символов при поиске».

Значит при поиске «Multy» и «multy» – это будут разные слова для поиска.

<figure><img src="https://lh5.googleusercontent.com/Sr7r2zQWXKhzmv1-JUS7IxiLDSlu8TOi-maOuQNSE9aBeT4zuTn_81sU2bCayT9vHyrhBqeizVOt5eQ5Y_dCYRtgzZMlRZnX3TxukdMaBbeeAVb51-6Zict6Z_GhWkSQU6m4yXtn1SSBUrFTeox1IlM" alt=""><figcaption></figcaption></figure>

«Передать JSON массив как список значений»

Означает, что можно передавать значения не только перечислением, как мы делали до этого.

<figure><img src="https://lh4.googleusercontent.com/FA8qOcG1AcSMkVNVxpA0GpdM57VkhdsizNObtf-rHEP0NVT6M35N_kZmOHkpLFI_3wQzqPQjPrvgYx8oVWRL86DRIZkGUIXe7j-wmIS_N4U0tdydGuMBwCVThjajahJuWlT4SqSkMTs9L4MSnUtJPGw" alt=""><figcaption></figcaption></figure>

А можно просто загрузить список значений в формате массива и добавить в это поле.

<figure><img src="https://lh6.googleusercontent.com/M5s2py9gzfRI5HsY_sMZscywiVrVeCxMC8wUGDHOqGaDrhBE0_jZURbCREm5EPaTjcACU3JzKZ-h0he81YWRgtfOPWLjnRpTEs6iZKWAOhjafp5s4omN6x0xvzuC3fZ4bxqK8ZYS41srgrYxPIZBTdE" alt=""><figcaption></figcaption></figure>

_При этом заголовок «Искомые значения» поменялся на заголовок «Массив значений»._

_Так же можно добавить переменную, которая этот массив в себе содержит._

<figure><img src="https://lh6.googleusercontent.com/dmRrBxm6gnzBuQFuflYhqYTidnOwIir_pYhIccSfzKWMGRmv8vRH854mb5OcnJ8vFyh0gfrK1NB2osok9FCMnaulTv7hxhFRnqYwn5pX6Y3ZnQM0LtRpUEh85lYMlff3DykAF9u7pO0Zz3B1JQosRRI" alt=""><figcaption></figcaption></figure>

<figure><img src="https://lh6.googleusercontent.com/HOFtSAmkdOmW8rMVxzIGadYIhdCABADKrlKxkJYoavxm9oQyd4-pj2Yd5geR3afpv2jV8IjxOcFFaJK17bRIlKlZKVtl--SYSpQhf1d1odV-yQpLrdo5ka50hTHtIhR3cnZlyPm_5kxaQJf1-WFJ-oM" alt=""><figcaption></figcaption></figure>

Если элемент НЕ подходит под заданное условие, то поиск выберёт всё, кроме заданного условия.

Пример:

<figure><img src="https://lh6.googleusercontent.com/LWG80iPW9Px7v9wdZ7If9xzLpy0cQvzCjhYfXCVzxSNC8hQ5rzAhWDQHog4_sT67gb2KLk4iI5bYnIr8wz9WV5xzpy5ZzBRa1JFzsbo7FNSqTzLZkWA2tadBbJH4qz-vXBqPvR8SfNkvFMSYWO4QXXE" alt=""><figcaption></figcaption></figure>

Массив данных: \["Один", "Два", "Три"]

Ищем текст равный «один»

Результат: функция найдёт элементы «Два» и «Три», но будет игнорировать элемент «Один».

<figure><img src="https://lh3.googleusercontent.com/hLDnQ0EMSmpbHjq2TzzBDsBhKvaPsaAXA02lcRZ5mkdFqdXUnimM1sC1oTOTY4vvpO-jR_lisONMT-c9lqjIPKxO0GEEdnhoZ5IwZ3y7Qhv-7O8JoBnHwBiS67kwuOUHYmsh-bjB2vXIahGpBAB3-U0" alt=""><figcaption></figcaption></figure>

«Обрабатывать исходный массив»

Если галочка снята, то изначальный массив никак не меняется. Мы просто выгружаем из него данные.

<figure><img src="https://2249269224-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FLmohxxJlESle3zPCwerN%2Fuploads%2F4jRhwKhWzr7gWSwKqYbJ%2Fimage.png?alt=media&#x26;token=1a16de1f-6838-4e44-882e-8806d055f930" alt=""><figcaption></figcaption></figure>

Причём если мы массив выгружаем из переменной при снятой галочке, то прописываем переменную со спецсимволами: {var:value}

<figure><img src="https://2249269224-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FLmohxxJlESle3zPCwerN%2Fuploads%2F0QRlD35HV1wSThgmzF9F%2Fimage.png?alt=media&#x26;token=35f1df2a-eacc-439f-b029-a9fd322e9a99" alt=""><figcaption></figcaption></figure>

А если ставим галочку, то изменения будут вноситься прямо в изначальный массив данных. В этом случае, нужно указывать только имя переменной или её путь.

К примеру: variables.array, massive и т.д.

Это нужно, чтобы избежать дополнительной конвертации данных, если вам всё равно нужно сохранять результат в ту же самую переменную.

<figure><img src="https://lh4.googleusercontent.com/gtk9Vvr13CXvi74YIrHSce9QvV9iXevsd1FdcEWiCH1_GcQKI2CB7iGCQ9j_q9SoldQhPQXKDv1TKQoY9W2sHgOoW79IX0nq9fIYpVENyt2zVWx36e30wKgrnoFe4ZKszZp7MxUgaDijbB0bxSPtTEM" alt=""><figcaption></figcaption></figure>

«Сохранить результат в переменную»

Если нам нужно сохранить результат поиска, мы можем записать его в переменную. Потом эту переменную можно будет вызвать через {var:имя\_переменной}. В _примере со скриншота это будет {var:otvet}_

Так же результат функции ВРЕМЕННО доступен в переменной {var:result}

