понедельник, 7 ноября 2016 г.

1.13 Массивы

(Из книги "Говоря на языке JavaScript").

Массивы - пронумерованные последовательности элементов, обращаться к которым можно по индексам. Отсчет индексов ведется от нуля.

Литералы массивов

Литералы массивов используются для их быстрого создания:
 
var arr = [ 'a', 'b', 'c' ];
 
В этом массиве три элемента: строки 'a', 'b', и 'c'. К ним можно обратиться с помощью порядковых номеров (индексов):
 
arr[0] // 'a'
arr[0] = 'x'; // Теперь массив выглядит как [ 'x', 'b', 'c' ].
 
Свойство length указывает как много элементов содержит массив. Его можно использовать для добавления и удаления элементов:
 
var arr = ['a', 'b'];
arr.length // 2

arr[arr.length] = 'c'; // Теперь массив такой: [ 'a', 'b', 'c' ]
arr.length // 3

arr.length = 1; // Теперь это [ 'a' ]
 
Оператор in применим не только к объектам, но и к массивам:
 
var arr = [ 'a', 'b', 'c' ];
1 in arr // true
5 in arr // false
 
Обратите внимание, что массивы это разновидность объектов, со всеми вытекающими последствиями:
 
var arr = [];
arr.foo = 123;
arr.foo // 123

Методы массивов

У массивов есть много методов (см. Методы прототипа Array). Вот некоторые из них:
 
var arr = [ 'a', 'b', 'c' ];

arr.slice(1, 2)  // [ 'b' ].
arr.slice(1)     // [ 'b', 'c' ].
arr.push('x')    // [ 'a', 'b', 'c', 'x' ].

arr.pop()        // Вытолкнули 'x', стало [ 'a', 'b', 'c' ].
arr.shift()      // Удаление первого, стало [ 'b', 'c' ].

arr.unshift('x') // Вставили в начало, стало [ 'x', 'b', 'c' ].
arr.indexOf('b') // Поиск индекса (1).
arr.indexOf('y') // Не найден (-1).

arr.join('-')    // Слияние в строку, 'x-b-c'.
arr.join('')     // 'xbc'
arr.join()       // 'x,b,c'

Обход элементов массива

Существует несколько способов итерации (см. Итерация (неразрушающая)). Два наиболее распространенных способа - использование методов forEach и map.

Метод forEach перебирает элементы массива и передает текущий элемент и его индекс функции:
 
[ 'a', 'b', 'c' ].forEach(
    function (elem, index) {  // (1)
        console.log(index + '. ' + elem);
    });
 
Этот код выведет:
 
0. a
1. b
2. c
 
Обратите внимание, что функция в строке (1) может обойтись и без полного набора аргументов. Она может, например, использовать только параметр  elem.

Метод map создает новый массив, применяя к элементам исходного некую функцию:
 
[1,2,3].map(function (x) { return x*x }) // Получится [ 1, 4, 9 ].

Комментариев нет:

Отправить комментарий