Zepto.js предоставляет удобные методы для работы с коллекциями
элементов, массивами и объектами, упрощая выполнение типичных операций
без необходимости использовать громоздкие циклы. Основой большинства
итераций в Zepto является метод $.each, который сочетает
универсальность и лаконичность.
$.each для
массивовСинтаксис метода для массивов:
$.each(array, function(index, value) {
// тело функции
});
Пример:
var numbers = [10, 20, 30, 40];
$.each(numbers, function(index, value) {
console.log('Индекс: ' + index + ', Значение: ' + value);
});
В этом примере каждый элемент массива numbers
обрабатывается последовательно, а функция обратного вызова получает и
индекс, и значение.
Особенности работы с $.each для
массивов:
false из функции
обратного вызова.this внутри функции ссылается на текущий элемент
массива.$.each(numbers, function(index, value) {
if (value === 30) return false; // прерывание цикла
console.log(value);
});
Метод $.each также работает с объектами, где вместо
индекса используется имя свойства:
$.each(object, function(key, value) {
// тело функции
});
Пример:
var person = {
name: "Иван",
age: 25,
profession: "Разработчик"
};
$.each(person, function(key, value) {
console.log(key + ': ' + value);
});
В этом случае функция обратного вызова получает ключ и соответствующее значение каждого свойства объекта.
Особенности работы с объектами:
false из функции также прекращает итерацию по
объекту.map
для преобразования коллекцийZepto поддерживает метод map, который позволяет
преобразовать элементы массивов или коллекций DOM:
var result = $.map(array, function(value, index) {
return value * 2;
});
Результатом является новый массив с изменёнными значениями:
console.log(result); // [20, 40, 60, 80]
Особенности $.map:
null или undefined
исключает элемент из нового массива.var nested = [1, [2, 3], 4];
var flattened = $.map(nested, function(value) { return value; });
console.log(flattened); // [1, 2, 3, 4]
Zepto расширяет итерацию на коллекции элементов, подобно jQuery:
$('div').each(function(index, element) {
$(element).text('Элемент номер ' + index);
});
Особенности:
each для коллекции DOM this
автоматически ссылается на текущий элемент.index и element позволяют
одновременно использовать порядковый номер и сам элемент.map для создания новых
массивов значений из коллекции DOM.Пример получения текста всех <p> элементов:
var texts = $('p').map(function(index, element) {
return $(element).text();
}).get(); // .get() преобразует коллекцию в обычный массив
$.each может быть
медленнее нативного for или forEach. Zepto
оптимизирован для компактного кода и удобства работы с DOM.map и each возвращают разные типы:
map создаёт массив, each возвращает исходную
коллекцию, что удобно для цепочек методов.| Метод | Применение | Возвращаемое значение | Особенности |
|---|---|---|---|
$.each |
Массивы и объекты | Исходный массив или объект | Можно прервать с false |
$.map |
Массивы и коллекции DOM | Новый массив | null/undefined исключает элемент |
each (DOM) |
Коллекции элементов DOM | Исходная коллекция Zepto | this = текущий элемент |
Эти методы делают Zepto удобным инструментом для перебора и преобразования данных в массиве, объекте или DOM-коллекции, обеспечивая лаконичный и читаемый код.