Login / Sign Up


Enter site:
Login: 
Password: 


First time here?
 
Register [?]:
Registering allows you:
  • Purchase products from the product catalog and access them any time.
  • Ask questions to another specialists in IT
  • Publish your own Joomla extensions, soft or other products if you are developer or distributor
  • Add interesting weblinks and access them from any place
  • Watch the updates of the site and have special abilities that guests don't have
  • Watch the news of the service and new articles and get knowledge
Choose login:
Your Email:
Enter the result of operation (in digits):
26 - 7 = ? Update

Работа с массивами
jQuery - работа с массивами PDF Print E-mail
Written by Максим   
Tuesday, 20 November 2012 15:53
Liked:
12


Did not like: 5

jQuery не только помогает стилизовать внешний вид сайта или блога с помощью красивых и динамичных плагинов, но и облегчает ряд действий, которые были бы рутинными для разработчика на обычном JavaScript. В частности, к таким действиям относится работа с массивами. Ниже мы рассмотрим часто встречающиеся действия с массивами, которые становятся простыми с помощью jQuery.

1. Объединение двух массивов - метод merge()

В копилке jQuery есть методmerge(), который помогает легко объединить два массива. Метод доступен, начиная с версии jQuery 1.0. К примеру, у нас есть объявление двух целочисленных массивовa1 иa2:


var a1 = [ 1, 2, 3 ]; 

jQuery не только помогает стилизовать внешний вид сайта или блога с помощью красивых и динамичных плагинов, но и облегчает ряд действий, которые были бы рутинными для разработчика на обычном JavaScript. В частности, к таким действиям относится работа с массивами. Ниже мы рассмотрим часто встречающиеся действия с массивами, которые становятся простыми с помощью jQuery.

1. Объединение двух массивов - метод merge()

В копилке jQuery есть методmerge(), который помогает легко объединить два массива. Метод доступен, начиная с версии jQuery 1.0. К примеру, у нас есть объявление двух целочисленных массивовa1 иa2:


var a1 = [ 1, 2, 3 ];
var a2 = [ 11, 22, 33 ];

Предположим, мы хотим получить третий массив, который будет представлять собой объединение всех элементов изa1иa2. Методmerge() библиотеки jQuery как раз выполняет такое объединение. Он принимает два аргумента - первый и второй массив, объединяет их и помещает результат в первый аргумент. Смотрим код:


// merge() объединяет массивы a1 и a2 и
// помещает результат в a1. Старый массив a1 "теряется"
$.merge(a1, a2); 

Как видим, методmerge() является "деструктивным", т.е., используя его, мы теряем наш начальный массивa1. К счастью, этого можно избежать, если перед вызовомmerge() сделать копию первого массива. Это можно осуществить, опять же, с помощьюmerge() следующим образом:


var a1 = [ 1, 2, 3 ];
var a2 = [ 11, 22, 33 ];

// используем merge() для "клонирования" массива a1.
// запоминаем старый массив в переменной old_a1
var old_a1 = $.merge([], a1); 

// теперь можно спокойно объединить массивы
// копия a1 у нас уже есть в переменной old_a1
$.merge(a1, a2);

Здесь мы использовали пустой массив[ ]в качестве первого аргумента методаmerge(). В результате вызоваmerge() проиcходит объединение этого пустого массива иa1, а результат запишется в переменнуюold_a1.

2. Проверка типа аргумента на массив - метод isArray()

Если возникает необходимость проверить тип некоторой переменной и понять - массив это или что-то еще, то для этого jQuery предоставляет методisArray. Его использовать очень просто и удобно - метод принимает единственный аргумент - для проверки его типа и возвращает true, если аргумент - массив JavaScript иfalse в любом другом случае:


$.isArray( [] ); // вернет true - передали пустой массив
$.isArray ([ 1, 2, 3]); // вернет true - передали массив целых
$.isArray ([ "one", "two", 3]); // вернет true - передали смешанный массив
$.isArray ( "not an array" ); // вернет false - передали строку
$.isArray ( { a: 1 } ); // вернет false - передали объект

// Примеры объявлений:
var myArray = [ 56, 34, 97 ];
alert ( $.isArray ( myArray ) ); // выведет на экран true

var i = 1;
alert ( $.isArray ( i ) ); // выведет false

МетодisArray доступен, начиная с версии библиотеки jQuery 1.3

3. Поиск элемента в массиве - метод inArray()

Сигнатура метода -inArray ( значение, массив [, начало] ). Если требуется найти элемент в массиве, то методinArray() из библиотеки jQuery - это то, что нам нужно. Принимает два аргумента. Первый - искомое значение, второй аргумент - массив, в котором производится поиск. МетодinArray()схож со стандартным методомindexOf(), предоставляемым JavaScript, тем, что возвращает значение-1, если элемент не найден. Если первый элемент в массиве совпадает со значением, то возвращается0. Примеры - ниже:


// массив для поиска
 var a = [ 2, 4, 1, 3 ]; 
// будем искать единицу в массиве a
var i = 1;
// в pos получим позицию в массиве, в которой
// найдено значение 1, т.е. pos = 2
var pos = $.inArray ( i, a ); 

В связи с тем, что в JavaScript значение0 считается не тождественным, но равнымfalse, т.е. выполняются условия:0 == false, но0 !== false, то методinArray следует аккуратно использовать в условияхif(...). Если необходимо понять, присутствует ли элемент в массиве, то нужно проверить, что возвращенное методом значение больше-1. То есть:


// массив, в котором ищем:
var a = [ 1, 2, 3];
// не делайте такую проверку!
if ( ! $.inArray ( 4, a ) ) { 
	alert ( "4 не найдено!");
} else { 
	alert ( "4 найдено!"); 
} 

// правильно сравнивать со значением -1 : 
if ( $.inArray ( 4, a ) > -1 ) { 
	alert ( "4 найдено!");
} else { 
	alert ( "4 не найдено!"); 
} 

В данном примере первыйif составлен неверно и является распространенной ошибкой. Мы хотим вроде бы проверить, что значение4 не найдено в массивеa. Однако, мы попадем в веткуelse , и нам выведется сообщение "4 найдено!". А все потому, чтоinArray возвращает-1, который в соответствии с JavaScript не равенfalse, т.е.-1 != false(в отличие от0 == false). Раз-1 не равенfalse, то он считаетсяtrue. А восклицательный знак вначале добавляет нам отрицание условия. Выходит следующее:if ( ! ( true ) ) - и попадаем в итоге в веткуelse, что неверно по логике нашего поиска. Второй пример - корректный. Мы проверяем возвращенное значение на> -1. То есть, условие будет успешно, даже если позиция найденного элемента - первая, т.е. равна0. В данном же случае - поскольку элемента4нет в массиве -$.inArrayвернет-1, и мы попадаем вelseи получим сообщение "4 не найдено!", что корректно.

Last Updated on Saturday, 08 December 2012 12:36
 


Found Error?

Система Orphus

Site Statistics

Яндекс.Метрика

Our Pages


Allineed.Ru © 2009-2012 - Allineed.Ru - ответы на IT вопросы, статьи о разработке, IT и программном обеспечении. При использовании материалов сайта ссылка обязательна. Использование данного сайта и любой его части означает принятие условий Пользовательского Соглашения.
Allineed.Ru is not affiliated with or endorsed by the Joomla! Project or Open Source Matters. The Joomla! name and logo is used under a limited license granted by Open Source Matters the trademark holder in the United States and other countries.