jQuery предоставляет удобные методы для работы с массивами и
коллекциями элементов, позволяя выполнять поиск, фильтрацию и
манипуляции с данными без необходимости писать сложные циклы. Основными
инструментами являются функции .each(),
.grep(),
.map(), а также возможность комбинировать
их с обычными методами JavaScript.
.each()Метод .each() позволяет перебрать
массив или коллекцию jQuery и выполнить функцию для каждого
элемента.
var numbers = [1, 2, 3, 4, 5];
$.each(numbers, function(index, value) {
if (value === 3) {
console.log("Найдено значение 3 на позиции " + index);
}
});
Особенности:
index — индекс текущего элемента.value — значение текущего элемента.return false;.$.each(numbers, function(index, value) {
if (value === 4) return false; // завершает перебор
console.log(value);
});
.grep()Метод $.grep() используется для поиска
элементов массива, соответствующих условию. Он возвращает новый массив с
элементами, удовлетворяющими предикату.
var numbers = [1, 2, 3, 4, 5, 6];
var evenNumbers = $.grep(numbers, function(value, index) {
return value % 2 === 0;
});
console.log(evenNumbers); // [2, 4, 6]
Ключевые моменты:
var notEven = $.grep(numbers, function(value) {
return value % 2 !== 0;
});
console.log(notEven); // [1, 3, 5]
.map()Метод $.map() позволяет создавать новый
массив, преобразуя каждый элемент исходного массива или коллекции.
var numbers = [1, 2, 3, 4];
var squared = $.map(numbers, function(value) {
return value * value;
});
console.log(squared); // [1, 4, 9, 16]
Особенности:
null или undefined, чтобы
исключить элементы из результата.var users = [
{name: "Алексей", age: 25},
{name: "Мария", age: 30},
{name: "Игорь", age: 20}
];
var names = $.map(users, function(user) {
return user.age > 22 ? user.name : null;
});
console.log(names); // ["Алексей", "Мария"]
Для поиска первого подходящего элемента часто используют комбинацию
.grep() и [0]:
var numbers = [10, 15, 20, 25];
var firstAbove18 = $.grep(numbers, function(value) {
return value > 18;
})[0];
console.log(firstAbove18); // 20
jQuery позволяет работать не только с обычными массивами, но и с коллекциями элементов DOM:
var listItems = $("ul li"); // коллекция <li>
var filteredItems = $.grep(listItems, function(item) {
return $(item).text().indexOf("важно") !== -1;
});
console.log(filteredItems); // массив элементов <li> с текстом "важно"
Замечания:
$.grep() работает и с массивами DOM-элементов..text(), .attr()).$.grep()..each()..map()..grep() с индексом [0].Эти методы образуют базовый набор для поиска и фильтрации данных в массивах и коллекциях в jQuery, обеспечивая лаконичность кода и улучшая читаемость при работе с массивами элементов или объектами.