JavaScript. Подробное руководство, 6-е издание
Шрифт:
for(col = 0; col < table[row].length; col++) {
table[row][col] = row*col;
}
}
// Расчет произведения 5*7 с помощью многомерного массива
var product = table[5][7]; // 35
7.8. Методы класса Array
Стандарт ECMAScript 3 определяет в составе
Array.prototype
Array
в справочной части по базовому языку JavaScript. Стандарт ECMAScript 5 определяет дополнительные методы для выполнения итераций по массивам - эти методы рассматриваются в разделе 7.9. 7.8.1. Метод join
Метод
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
, создающему массив путем разбиения строки на фрагменты. 7.8.2. Метод reverse
Метод
Array.reverse
меняет порядок следования элементов в массиве на обратный и возвращает переупорядоченный массив. Перестановка выполняется непосредственно в исходном массиве, т. е. этот метод не создает новый массив с переупорядоченными элементами, а переупорядочивает их в уже существующем массиве. Например, следующий фрагмент, где используются методы reverse
и join,
дает в результате строку "3,2,1":
var а = [1,2,3];
a.reverse.join; // => "3,2,1”: теперь а = [3,2,1]
7.8.3. Метод sort
Метод
Array.sort
сортирует элементы в исходном массиве и возвращает отсортированный массив. Если метод sort
вызывается без аргументов, сортировка выполняется в алфавитном порядке (для сравнения элементы временно преобразуются в строки, если это необходимо):
var а = new Array("banana", "cherry", "apple");
a.sort;
var s = a.join(", ”); // s == "apple, banana, cherry"
Неопределенные
элементы переносятся в конец массива.Для сортировки в каком-либо ином порядке, отличном от алфавитного, методу
sort
можно передать функцию сравнения в качестве аргумента. Эта функция устанавливает, какой из двух ее аргументов должен следовать раньше в отсортированном списке. Если первый аргумент должен предшествовать второму, функция сравнения должна возвращать отрицательное число. Если первый аргумент должен следовать за вторым в отсортированном массиве, то функция должна возвращать число больше нуля. А если два значения эквивалентны (т. е. порядок их следования не важен), функция сравнения должна возвращать 0. Поэтому, например, для сортировки элементов массива в числовом порядке можно сделать следующее:
var а = [33, 4, 1111, 222];
a.sortO; // Алфавитный порядок: 1111, 222, 33, 4
a.sort(function(a,b) { // Числовой порядок: 4, 33, 222, 1111
return a-b; // Возвращает значение < 0, 0 или > 0
}); //в зависимости от порядка сортировки а и b
a.sort(function(a,b) {return b-a}); // Обратный числовой порядок
Обратите внимание, насколько удобно использовать в этом фрагменте неименованную функцию. Функция сравнения используется только здесь, поэтому нет необходимости давать ей имя.
В качестве еще одного примера сортировки элементов массива можно реализовать сортировку массива строк без учета регистра символов, передав функцию сравнения, преобразующую свои аргументы в нижний регистр (с помощью метода
toLowerCase
) перед сравнением.
а = ['ant', 'Bug', 'cat', 'Dog']
a.sort; // сортировка с учетом регистра символов: [ 'Bug', 'Dog', 'ant', 'cat' ]
a.sort(function(s,t) { // Сортировка без учета регистра символов
var а = s.toLowerCase;
var b = t.toLowerCase;
if (a < b) return -1;
if (a > b) return 1;
return 0;
}); //=>['ant','Bug','cat'.'Dog']
7.8.4. Метод concat
Метод
Array.concat
создает и возвращает новый массив, содержащий элементы исходного массива, для которого был вызван метод concat
, и значения всех аргументов, переданных методу concat
. Если какой-либо из этих аргументов сам является массивом, его элементы добавляются в возвращаемый массив. Следует, однако, отметить, что рекурсивного превращения массива из массивов в одномерный массив не происходит. Метод concat
не изменяет исходный массив. Ниже приводится несколько примеров:
Поделиться с друзьями: