Функция $.grep()

Определение и применение

Функция $.grep() отбирает элементы массива по условию и возвращает новый массив. Например, с её помощью можно выбрать доступные товары из общего списка, сохранив исходные данные.

Синтаксис

JavaScript
const selected = $.grep(array, function (value, index) { return condition; });
const rejected = $.grep(array, predicate, true);

Параметры и возвращаемое значение

array — исходный массив, predicate получает значение и индекс. Истинный результат включает элемент в новый массив. Третий аргумент invert по умолчанию равен false; значение true оставляет элементы, не прошедшие проверку.

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

Особенности и совместимость

Функция доступна с 1.0. Для обычных современных массивов близкой альтернативой является Array.prototype.filter(); инверсию можно выразить отрицанием условия.

Не путайте порядок аргументов с $.each(): здесь сначала идёт значение, затем индекс. Обработчик должен проверять элемент, а не возвращать Promise: асинхронные результаты автоматически не ожидаются.

Документация

Пример использования

Отбор и инверсия: попробуйте сами

Одна выборка оставляет числа больше трёх, другая — остальные. Исходный массив сохраняется. Используется jQuery 4.0.0.

index.html
HTML
<pre id="result"></pre>
main.js
JavaScript
const values = [2, 5, 1, 8]
const test = (value) => value > 3
$('#result').text($.grep(values, test).join(', ') + ' | ' + $.grep(values, test, true).join(', '))