Добавляем...


  Массивы как стеки и очереди
   JavaScript 1.2+ и JScript 5.5+ предлагают методы, позволяющие обходится с массивами подобно стекам и очередям. Для читателей, не знакомых с этими абстрактными типами данных, сообщаем, что стек используется для запоминания данных в порядке LIFO (last-in first-out - "последним пришел - первым обслужен"). Это значит, что первым при чтении стека будет извлечен объект, помещенный в стек последним. Очередь - это абстрактный тип данных, используемый для запоминания данных в порядке FIFO (first-in first-out - "первым пришел - первым обслужен"). Данные из очереди извлекаются в порядке их поступления.
   Стек в форме массива управляется с помощью методов push() и pop (). Вызов push() добавляет аргументы (в указанном порядке) в конец массива с соответствующим приращением значения length. Вызов pop() удаляет последний элемент массива, возвращает его и уменьшает значение свойства length на единицу. Пример использования указанных возможностей показан ниже. Содержимое массива и возвращаемые значения указаны в комментариях.

var stack = []; // []
stack.push("первый"); // ["первый"]
stack.push(10, 20); // ["первый", 10, 20]
stack.pop(); // ["первый", 10] Возвращает 20
stack.push(2); // ["первый", 10, 2]
stack.pop(); // ["первый", 10] Возвращает 2
stack.pop(); // ["первый"] Возвращает 10
stack.pop(); // [] Возвращает "первый"

   Конечно, можно использовать push() и pop() для присоединения и удаления данных в конце массива и без упоминания о том, что это фактически стек.
   JavaScript предлагает также методы unshift() и shift(). Эти методы работают аналогично push() и pop(), за исключением того, что добавляют и удаляют данные из начала массива. Вызов unshift() добавляет аргументы (в указанном порядке) в начало массива, сдвигая существующие элементы на места с высшими индексами и соответственно увеличивая значение свойства length массива. Например,

var myArray = [345, 78, 2];
myArray.unshift(4,"fun");
alert(myArray) ;

добавляет два элемента в начало массива.

   Вызов shift() удаляет первый элемент массива, возвращает его, перемещает оставшиеся элементы влево на один индекс и уменьшает значение length. Можете думать о shift() как о сдвиге всех элементов массива влево на один индекс, в результате чего первый элемент выталкивается и возвращается. Поэтому, используя предыдущий пример, если вызвать

myArray.shift() ;

мы получим в результате массив, содержащий "fun", 345, 78 и 2. Как и в случае pop (), вызов shift ) для массива возвратит значение, которое можно использовать. Например, можно сохранить вытолкнутое из массива значение в переменной:

var х = myArray.shift();

   Можно использовать push() и shift() для имитации очереди. Следующий пример иллюстрирует соответствующий принцип. Мы помещаем новые данные в конец массива и извлекаем данные, исключая элемент с нулевым индексом. Содержимое массива и возвращаемые значения указаны в комментариях.

var queue = [];
queue.push("первый", 10); //["первый", 10]
queue.shift(); // [10] Возвращает "первый"
queue.push(20); // [10, 20]
queue.shift (); // [20] Возвращает 10
queue.shift(); // [] Возвращает 20

   Даже если вы никогда не будете использовать массивы как стеки или очереди, методы, обсуждавшиеся в этом разделе, пригодятся при манипуляциях с содержимым массивов. Давайте рассмотрим несколько более полезных методов работы с массивами.
назад: Свойство Length далее: Работа с данными массивов


добавить комментарий
(без перезагрузки и регистрации)


10 случайных разделов

Что ищем на сайте ?


Примеры кода на сайте







@ 2008-2011 Amber
При использовании материалов ссылка на сайт обязательна
Яндекс.Метрика