Из существующего массива необходимо выбрать в новый массив только те элементы, которые удовлетворяют определенному условию.
Решение
Задачу решаем, используя вспомогательную функцию $.grep(array, function(elementOfArray, indexInArray), [invert]) (листинг 10.1.4).
Листинг 1 0 .1 .4 . Использование вспомога тельной функции $.grep()
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" lang="ru" xml:lang="ru"> <head> <title>example-10-1-4</title> <content> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <script src="js/jquery-1.5.2.min.js" type="text/javascript"></script> <script type="text/javascript"> $(function () { var arr = [ 1, 9, 3, 8, 6, 1, 5, 9, 4, 7, 3, 8, 6, 9, 1 ]; $("div:eq(0)").text(arr.join(", ")); arr = $.grep(arr, function(n, i){ return (n != 5 && i > 4); }); $("div:eq(1)").text(arr.join(", ")); arr = $.grep(arr, function (a) { return a != 9; },true); $("div:eq(2)").text(arr.join(", ")); }); </script> </head> <body> </body> </html>
Обсуждение
HTML-разметка, показанная в листинге 10.1.4, описывает три элемента div, куда мы будем вставлять результаты наших исследований.
В самом начале JavaScript-кода объявляем исходный массив arr. Чтобы видеть его содержимое, мы объединим массив в строку и вставим в первый элемент div. Затем попробуем отфильтровать некоторые элементы массива, для чего передадим массив arr вспомогательной функции $.grep() в качестве первого аргумента. Второй аргумент — функция, которая будет применена к каждому элементу массива. Эта функция может принимать два аргумента. Первый — значение элемента массива, второй — его индекс. Если функция возвращает false — элемент не будет включен в результирующий массив. Мы выбираем в новый массив все элементы, значение которых не равно пяти и индекс элемента массива более четырех. В результате во второй элемент div будет вставлена строка: 1, 9, 4, 7, 3, 8, 6, 9, 1.
Если передать функции $.grep() необязательный аргумент invert, то в результирующий массив будут включены только те значения, которые не соответствуют условию. В последний элемент div будет вставлена строка: 9, 9. Заметьте, что мы указывали условие a!=9, но, передав в необязательном аргументе invert значение true, получили противоположный результат.
Источник: Самков Г. А. jQuery. Сборник рецептов. — 2-е изд., перераб. и доп. — СПб.: БХВ-Петербург, 2011. — 416 с.: ил. + CD-ROM — (Профессиональное программирование)
Похожие посты:
- Что такое селекторы и как их правильно использовать (0)
- Изменение высоты строки (межстрочного интервала) в тексте (0)
- Центрирование текста (0)
- Изменение стиля маркеров списка или удаление маркеров (0)
- Задание фонового изображения для страницы с помощью CSS (0)
- Выбор единиц измерения размера шрифтов:пикселы, пункты, пики или что-то другое (0)
- Организация табличных данных:удобство доступа и наглядность (0)