---
sidebar_position: 4
---

# Массивы
Особая структура данных, которая называется массив(Array) - это упорядоченная коллекция данных.
```js
let arr = new Array();
let arr = [];
```

### Получение последних элементов при помощи «at»
```js
let fruits = ["Apple", "Orange", "Plum"];
// то же самое, что и fruits[fruits.length-1]
alert( fruits.at(-1) ); // Plum
```
Другими словами, arr.at(i):
- это ровно то же самое, что и arr[i], если i >= 0.
- для отрицательных значений i, он отступает от конца массива.

### Методы pop/push, shift/unshift
- **`push`** - Добавляет элемент в конец массива
- **`pop`** - Удаляет последний элемент из массива и возвращает его
- **`shift`** - Удаляет из массива первый элемент и возвращает его
- **`unshift`** - Добавляет элемент в начало массива

Методы **`push`** и **`unshift`** могут добавлять сразу несколько элементов

Методы **`push`**/**`pop`** выполняются быстро, а методы **`shift`**/**`unshift`** – медленно.

Чтобы пройтись по элементам массива:
- **for (let i=0\; i\<arr.length\; i++)** – работает быстрее всего, совместим со старыми браузерами.
- **for (let item of arr)** – современный синтаксис только для значений элементов (к индексам нет доступа).
- **for (let i in arr)** – никогда не используйте для массивов!

💥 Не следует использовать цикл **for..in** для массивов.
1. Цикл **for..in** выполняет перебор всех свойств объекта, а не только цифровых.
2. Цикл **for..in** оптимизирован под произвольные объекты, не массивы, и поэтому в 10-100 раз медленнее.

Ещё один интересный факт о свойстве **length** – его можно перезаписать.\
Cамый простой способ очистить массив – это arr.length = 0;
```js
let arr = [1, 2, 3, 4, 5];

arr.length = 2; // укорачиваем до двух элементов
alert( arr ); // [1, 2]

arr.length = 5; // возвращаем length как было
alert( arr[3] ); // undefined: значения не восстановились
```

### new Array()
```js
let arr = new Array("Яблоко", "Груша", "и тд");
```
Если new Array вызывается с одним аргументом, который представляет собой число, он создаёт массив без элементов, но с заданной длиной.

### Многомерные массивы
Массивы могут содержать элементы, которые тоже являются массивами. Это можно использовать для создания многомерных массивов, например, для хранения матриц
```js
let matrix = [
  [1, 2, 3],
  [4, 5, 6],
  [7, 8, 9]
];

alert( matrix[1][1] ); // 5, центральный элемент
```

### Не сравнивайте массивы при помощи ==
В JavaScript, в отличие от некоторых других языков программирования, массивы не следует сравнивать при помощи оператора ==.

У этого оператора нет специального подхода к массивам, он работает с ними, как и с любыми другими объектами.
Итак, если мы всё же сравниваем массивы с помощью ==, то они никогда не будут одинаковыми, если только мы не сравним две переменные, которые ссылаются на один и тот же массив
Вместо этого сравните их по элементам в цикле или используя методы итерации.

🚀 **Источник: [https://learn.javascript.ru/array](https://learn.javascript.ru/array)**