JavaScript. Подробное руководство, 6-е издание, стр. 78
Кроме того, как уже было показано выше, имеется возможность удалять элементы в конце массива простым присваиванием нового значения свойству
<b>length</b><b>рор()</b><b>push()</b><b>shift()</b><b>unshift()</b><b>delete</b><b>shift()</b><b>рор()</b><b>shift()</b>Наконец существует многоцелевой метод
<b>splice()</b><b>length</b>7.6. Обход элементов массива
Наиболее часто для обхода элементов массива используется цикл
<b>for</b><b>var keys = Object.keys(o); // Получить массив имен свойств объекта о </b><b>var values = [] // Массив для сохранения значений свойств</b><b>for(var і = 0; і < keys.length; i++) { // Для каждого элемента в массиве </b><b> var key = keys[і]; // Получить имя свойства по индексу</b><b> values[i] = о[key]; // Сохранить значение в массиве values</b><b>}</b>Во вложенных циклах и в других контекстах, когда скорость работы имеет критическое значение, иногда можно увидеть такой оптимизированный способ выполнения итераций по массиву, когда длина массива определяется только один раз, а не в каждой итерации:
<b>for(var і = 0, len = keys.length; і < len; i++) {</b><b> // тело цикла осталось без изменений</b><b>}</b>В примерах выше предполагается, что выполняется обход плотного массива и все элементы содержат допустимые значения. В противном случае необходимо организовать проверку значений элементов массива перед их использованием. Если желательно исключить из обработки значения
<b>null, undefined</b><b>for(var і = 0; і < a.length; i++) { </b><b>if (!a[і]) continue; // Пропустить null, undefined и несуществ. элементы // тело цикла </b><b>} </b>Если необходимо пропустить только значение undefined и несуществующие элементы, проверку можно записать так:
<b>for(var і = 0; і < a.length; i++) { </b><b>if (a[і] === undefined) continue; // Пропустить undefined + несуществ. эл. </b><b> // тело цикла </b><b>}</b> Наконец, если необходимо пропустить только несуществующие элементы, а элементы со значением undefined обрабатывать как обычные элементы, проверку можно записать так:
<b>for(var і = 0; і < a.length; i++) {</b><b>if (!(i in a)) continue ; // Пропустить несуществующие элементы </b><b> // тело цикла</b><b>}</b>Для обхода разреженных массивов можно также использовать цикл
<b>for/in</b><b>for(var index in sparseArray) {</b><b> var value = sparseArray[index];</b><b> // Далее следуют операции с индексами и значениями</b><b>}</b>Как отмечалось в разделе 6.5, цикл
<b>for/in</b><b>Array.prototype</b><b>for/in</b><b>for(var і in а) {</b><b> if (!a.hasOwnProperty(i)) continue; // Пропустить унаследованные свойства</b><b> // тело цикла</b><b>}</b><b>for(var і in а) {</b><b> // Пропустить і, если оно не является целым неотрицательным числом</b><b> if (String(Math.floor(Math.abs(Number(i)))) !== і) continue;</b><b>}</b>Спецификация ECM AScript допускает возможность обхода свойств объекта в цикле
<b>for/in</b><b>for/in</b><b>for</b>