Стандарт ECMAScript 5 определяет множество новых методов, позволяющих выполнять итерации по элементам массивов в порядке возрастания индексов и передавать их функции, определяемой пользователем. Наиболее типичным представителем этих методов является метод forEach()
:
var data = [1,2,3,4,5]; // Этот массив требуется обойти
var sumOfSquares =0; // Требуется вычислить сумму квадратов элементов
data.forEach(function(x){ // Передать каждый элемент этой функции
sumOfSquares += х*х; // прибавить квадрат к сумме
});
sumOfSquares // =>55 : 1+4+9+16+25
forEach()
и другие родственные методы, предназначенные для выполнения итераций, позволяют использовать при работе с массивами простой и мощный стиль функционального программирования. Они описываются в разделе 7.9, и еще раз мы вернемся к ним в разделе 8.8, когда будем рассматривать приемы функционального программирования.
JavaScript не поддерживает «настоящие» многомерные массивы, но позволяет неплохо имитировать их при помощи массивов из массивов. Для доступа к элементу данных в массиве массивов достаточно дважды использовать оператор []
. Например, предположим, что переменная matrix
- это массив массивов чисел. Каждый элемент matrix[x]
- это массив чисел. Для доступа к определенному числу в массиве можно использовать выражение matrix[x][y]
. Ниже приводится конкретный пример, где двумерный массив используется в качестве таблицы умножения:
// Создать многомерный массив
var table = new Array(10); // В таблице 10 строк
for(var і = 0; і < table.length; i++)
table[i] = new Array(10); // В каждой строке 10 столбцов
// Инициализировать массив
for(var row = 0; row < table.length; row++) {
for(col = 0; col < table[row].length; col++) {
table[row][col] = row*col;
}
}
// Расчет произведения 5*7 с помощью многомерного массива
var product = table[5][7]; // 35
Стандарт ECMAScript 3 определяет в составе Array.prototype
множество удобных функций для работы с массивами, которые доступны как методы любого массива. Эти методы будут представлены в следующих подразделах. Более полную информацию можно найти в разделе Array
в справочной части по базовому языку JavaScript. Стандарт ECMAScript 5 определяет дополнительные методы для выполнения итераций по массивам - эти методы рассматриваются в разделе 7.9.
Метод Array.join()
преобразует все элементы массива в строки, объединяет их и возвращает получившуюся строку. В необязательном аргументе методу можно передать строку, которая будет использоваться для отделения элементов в строке результата. Если строка-разделитель не указана, используется запятая. Например, следующий фрагмент дает в результате строку «1,2,3»:
var а = [1, 2, 3]; // Создать новый массив с указанными тремя элементами
a.join(); // => "1,2,3"
a.join(" "); // => "1 2 З"
a. join(""); // => "123"
var b = new Аггау(10); // Массив с длиной, равной 10, и без элементов
b. join("-') // => "---------" строка из 9 дефисов
Метод Array.join()
является обратным по отношению к методу String.split()
, создающему массив путем разбиения строки на фрагменты.
Метод Array.reverse()
меняет порядок следования элементов в массиве на обратный и возвращает переупорядоченный массив. Перестановка выполняется непосредственно в исходном массиве, т. е. этот метод не создает новый массив с переупорядоченными элементами, а переупорядочивает их в уже существующем массиве. Например, следующий фрагмент, где используются методы reverse()
и join(),
дает в результате строку "3,2,1":
var а = [1,2,3];
a.reverse().join(); // => "3,2,1”: теперь а = [3,2,1]
Метод Array.sort()
сортирует элементы в исходном массиве и возвращает отсортированный массив. Если метод sort()
вызывается без аргументов, сортировка выполняется в алфавитном порядке (для сравнения элементы временно преобразуются в строки, если это необходимо):
Читать дальше
Конец ознакомительного отрывка
Купить книгу