Функция $.grep()
Определение и применение
Функция $.grep() отбирает элементы массива по условию и возвращает новый массив. Например, с её помощью
можно выбрать доступные товары из общего списка, сохранив исходные данные.
Синтаксис
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
<pre id="result"></pre>
main.js
const values = [2, 5, 1, 8]
const test = (value) => value > 3
$('#result').text($.grep(values, test).join(', ') + ' | ' + $.grep(values, test, true).join(', '))
Нажмите , чтобы запустить пример.