Массивы
Массивы — тип данных, позволяющий хранить в себе упорядоченный набор данных.
Начнём с примеров.
Массив первых десяти чётных чисел:
var events = [2, 4, 6, 8, 10, 12, 14, 16, 18, 20];
Пустой массив:
var empty = [];
Свойства массивов
Как и в ситуации со строками, единственным широкоиспользуемым свойством массивов является свойство length
.
var array = [1, 2, 3];
array.lengh; // => 3
Методы
Для добавления элемента в массив «с конца» используют метод push:
var array = ['Hello'];
array.push('world');
array; // => ['Hello', 'world'];
Кроме push для манипуляции с содержимым массива можно использовать методы pop, shift и unshift.
var array = [1, 2, 3];
array.pop(); // => 3
array; // => [1, 2]
array.unshift(0);
array; // => [0, 1, 2]
array.shift(); // => 0
array; // => [1, 2]
Для получения фрагмента массива используют метод slice:
var array = [1, 2, 3, 4];
array.slice(0, 2); // => [1, 2]
array.slice(2, 4); // => [3, 4]
array.slice(3, 3); // => []
array.slice(); // => [1, 2, 3, 4]
array.slice(1); // => [2, 3, 4]
array.slice(1, -1); // => [2, 3]
Первый параметр метода содержит индекс элемента, с которого нужно начать фрагмент. Второй параметр указывает индекс первого элемента, который не попадёт в фрагмент. Если второй параметр меньше нуля, индекс отсчитывается от конца массива. Если второй параметр не использован, фрагмент начинается от индекса, указанного в первом параметре и заканчивается с самим массивом.
При обращении к slice
без параметров на выходе получим копию исходного массива.
Пример с копированием
var array = [1, 2, 3, 4];
var a2 = array;
var a3 = array.slice();
a3.push(5);
array; // => [1, 2, 3, 4]
a2.push(5);
array; // => [1, 2, 3, 4, 5]
Переменная a2
ссылается на исходный массив array
, тогда как a3
хранит ссылку на копию исходного массива. В результате, когда мы изменяем a3
, исходный массив не меняется, а при изменении a2
— меняется.
Операция []
Для получения элемента массива по индексу используют запись array[index]
:
var array = [1, 2, 3, 4];
array[0]; // => 1
array[3]; // => 4
Для прохода по элементам массива часто используют цикл for
, свойство массива length
и получение элемента через []
:
var array = [1, 2, 3];
for (var i = 0; i < array.length; i = i + 1) {
console.log(array[i]); // Выводим элемент массива в консоль
}
Этих операций, свойств и методов должно быть достаточно, чтобы записывать решение большинства алгоритмов, работающих с массивами. Кроме описанных, существуют методы, позволяющие сокращать запись похожих алгоритмов. Эти методы мы рассмотрим в последующих главах.
Задания
- Опишите массив
array
, содержащий все числа от7
до13
включительно в порядке возрастания. - Напишите функцию
summ
, принимающую параметр-массив и возвращающую сумму его значений. - Напишите функцию
evens
, принимающую массив чисел и возвращающую массив только чётных чисел из исходного массива, в том порядке, в котором они находились в исходном массиве. - Напишите функцию, принимающую на вход два массива чисел и возвращающую массив, состоящий из массивов. Каждый элемент нового массива должен содержать в себе два числа — число из первого массива и число из второго. Например:
var combinations = function(a, b) { … }; // ваша функция
combinations([1, 2, 3], [4, 5]);
// => [[1, 4], [1, 5], [2, 4], [2, 5], [3, 4], [3, 5]];