Массивы
Массив хранит много значений по порядку под одним именем. В ["red", "green", "blue"] значение "red" стоит под индексом 0, а длина равна 3.
Список в одной переменной
Допустим, программа следит за оценками целого класса. С тридцатью переменными score1, score2, score3 работать мучительно, и пройти по ним циклом невозможно. Массив представляет собой одно значение, в котором хранится упорядоченный список других значений. Его пишут в квадратных скобках через запятую:
const fruits = ["apple", "banana", "cherry"];
console.log(fruits.length); // 3
console.log(fruits[0]); // apple
console.log(fruits[2]); // cherryКаждое значение в массиве называется элементом. Элементы нумеруются индексами начиная с 0, точно так же, как символы в строке. Значит, первый элемент fruits[0], а последний fruits[fruits.length - 1]. Обращение к несуществующему индексу, например fruits[10], не вызывает ошибку; оно даёт undefined. В массиве может храниться значение любого вида, и элементы даже не обязаны быть одного типа, хотя на практике обычно так и есть.
Изменение массива
В отличие от строк, массивы можно менять на месте. Присвой значение по индексу, чтобы заменить элемент: fruits[1] = "blueberry". Метод push добавляет элемент в конец, а pop убирает последний и возвращает его. unshift и shift делают то же в начале. Это работает, даже если массив объявлен через const. const лишь не даёт имени указывать на другой массив; содержимое он не замораживает.
const list = ["milk", "eggs"];
list.push("bread");
console.log(list.length); // 3
const last = list.pop();
console.log(last); // bread
console.log(list.join(", ")); // milk, eggsЕщё два метода отвечают на вопросы. includes(x) даёт true, если x есть в массиве, а indexOf(x) даёт его индекс или -1, если его нет. join(", ") склеивает все элементы в одну строку с заданным разделителем между ними, и это самый простой способ аккуратно напечатать список.
Проход по массиву
Массивы и циклы созданы друг для друга. Цикл for с индексом от 0 до длины, не включая её, посещает каждый элемент. Цикл for...of короче, когда нужны только значения, а не их позиции:
const scores = [70, 85, 90, 55];
for (let i = 0; i < scores.length; i++) {
console.log(i, scores[i]);
}
let total = 0;
for (const s of scores) {
total += s;
}
console.log(total / scores.length); // 75Обрати внимание на условие i < scores.length: там <, а не <=. При четырёх элементах индексы идут от 0 до 3, и с <= цикл заглянул бы на шаг дальше конца. Эта ошибка на единицу (off-by-one) является одной из самых частых во всём программировании.
Два имени, один массив
Числа и строки копируются, когда их присваивают другой переменной, а массивы нет. После const a = [1, 2]; const b = a; оба имени указывают на один и тот же массив, поэтому b.push(3) меняет и то, что видно через a: теперь a.length равно 3. Если нужна отдельная копия, напиши const b = [...a];, это раскладывает элементы a в совершенно новый массив. Объекты, о которых следующий урок, ведут себя так же.
Разобранный пример. Найди наибольшее число в [4, 17, 9, 12] без Math.max. Начни с let best = nums[0], пройди циклом по остальным и каждый раз, когда элемент больше best, сохраняй его в best. После цикла best равно 17. Тот же приём, переменная, которая помнит лучшее на данный момент, находит самое длинное слово, самую низкую цену или самую раннюю дату.
| массив | Упорядоченный список значений в [ ] |
| элемент | Одно значение внутри массива |
| arr[0] | Первый элемент |
| arr[arr.length - 1] | Последний элемент |
| push / pop | Добавить в конец / убрать с конца |
| includes | true, если значение есть в массиве |
| join | Склеить элементы в одну строку |
| for...of | Цикл по значениям массива |
| ошибка на единицу (off-by-one) | Шаг лишний или шаг недостающий, часто <= вместо < |
- Что выведет этот код?
const a = [10, 20, 30]; console.log(a[1]); - Что выведет этот код?
const a = [10, 20, 30]; console.log(a.length); - Что выведет этот код?
const a = ["x", "y", "z"]; console.log(a[a.length - 1]); - Что выведет этот код?
const a = [1, 2]; a.push(3); a.push(4); console.log(a.length); - Что выведет этот код?
const a = [5, 6, 7]; const x = a.pop(); console.log(x, a.length);- 7 2
- 5 2
- 7 3
- Что выведет этот код?
const a = ["cat", "dog"]; console.log(a.indexOf("bird")); - Что выведет этот код?
const a = ["a", "b", "c"]; console.log(a.join("-")); - Что выведет этот код?
const a = [3, 4, 5]; let t = 0; for (const n of a) { t += n; } console.log(t); - Что выведет этот код?
const a = [1, 2, 3]; a[0] = 9; console.log(a[0] + a[2]); - Что выведет этот код?
const a = ["red", "green"]; console.log(typeof a[5]);- undefined
- Ошибку
- string
- Какой заголовок цикла посещает каждый индекс arr ровно один раз?
for (let i = 0; i < arr.length; i++)for (let i = 0; i <= arr.length; i++)for (let i = 1; i <= arr.length; i++)
- Массивы хранят упорядоченные значения в [ ]; индексы начинаются с 0.
- Последний элемент: arr[arr.length - 1].
- push и pop добавляют и убирают в конце; содержимое массива const всё равно можно менять.
- includes, indexOf и join отвечают на частые вопросы.
- Перебирай i от 0, пока i < length, или используй for...of для значений.
Источники курса (2)
- MDN Web Docs, JavaScript Guide (developer.mozilla.org/en-US/docs/Web/JavaScript/Guide, chapters Introduction, Grammar and types, Control flow, Loops and iteration, Functions, Expressions and operators, Numbers and strings, Indexed collections, Working with objects; checked 2026-10-17)
- Ecma International, ECMA-262 ECMAScript 2026 Language Specification, 17th edition, June 2026 (tc39.es/ecma262 and ecma-international.org/publications-and-standards/standards/ecma-262, checked 2026-10-17)
Проверено: 2026-10-17