0 added
0 removed
Original
2026-01-01
Modified
2026-02-26
1
<p>Понятие "фильтрация" интуитивно понятно каждому человеку. Мы пьём фильтрованную воду и фильтруем то, что говорим. В программировании практически то же самое. Операция "фильтрация" по отношению к коллекции означает, что мы отбираем из неё только те элементы, которые удовлетворяют нужному условию. Типичная задача может выглядеть так - выбрать пользователей старше 10 лет:</p>
1
<p>Понятие "фильтрация" интуитивно понятно каждому человеку. Мы пьём фильтрованную воду и фильтруем то, что говорим. В программировании практически то же самое. Операция "фильтрация" по отношению к коллекции означает, что мы отбираем из неё только те элементы, которые удовлетворяют нужному условию. Типичная задача может выглядеть так - выбрать пользователей старше 10 лет:</p>
2
<p>Фильтрация встречается так же часто, как отображение. Общая схема кода при фильтрации практически один в один как и в отображении, кроме пары ключевых моментов:</p>
2
<p>Фильтрация встречается так же часто, как отображение. Общая схема кода при фильтрации практически один в один как и в отображении, кроме пары ключевых моментов:</p>
3
<ul><li>Фильтрация возвращает коллекцию либо того же размера (если ничего не было отфильтровано), либо меньшего. Она может вернуть даже пустую коллекцию, если ни один из элементов не подошёл.</li>
3
<ul><li>Фильтрация возвращает коллекцию либо того же размера (если ничего не было отфильтровано), либо меньшего. Она может вернуть даже пустую коллекцию, если ни один из элементов не подошёл.</li>
4
<li>Фильтрация всегда возвращает исходные элементы. Она никогда не делает отображение. Если на вход фильтрации поступил список пользователей, то список пользователей будет и на выходе.</li>
4
<li>Фильтрация всегда возвращает исходные элементы. Она никогда не делает отображение. Если на вход фильтрации поступил список пользователей, то список пользователей будет и на выходе.</li>
5
</ul><p>Теперь посмотрим, как выглядит фильтрация при использовании метода filter():</p>
5
</ul><p>Теперь посмотрим, как выглядит фильтрация при использовании метода filter():</p>
6
<p>Функция, передаваемая в метод filter(), должна быть предикатом. То есть её задача вернуть либо true, либо false для каждого элемента коллекции. Значение, которое возвращается, никак не используется - оно всего лишь говорит о том, включать ли текущий элемент в итоговый массив или нет. Новички часто делают ошибку на этом этапе и начинают возвращать из фильтра то, что они бы хотели увидеть в результирующем массиве (для этого надо применять метод map()).</p>
6
<p>Функция, передаваемая в метод filter(), должна быть предикатом. То есть её задача вернуть либо true, либо false для каждого элемента коллекции. Значение, которое возвращается, никак не используется - оно всего лишь говорит о том, включать ли текущий элемент в итоговый массив или нет. Новички часто делают ошибку на этом этапе и начинают возвращать из фильтра то, что они бы хотели увидеть в результирующем массиве (для этого надо применять метод map()).</p>
7
<h2>Реализация</h2>
7
<h2>Реализация</h2>
8
<p>Напишем свою собственную функцию myFilter, работающую аналогично методу массива filter:</p>
8
<p>Напишем свою собственную функцию myFilter, работающую аналогично методу массива filter:</p>
9
9