3. Mассивы
Определение массива
const items = []; // Создание пустого массива
const animals = ['cats', 'dogs', 'birds'];// Создание массива с тремя элементами
animals.length; // 3, длина массива
animals.toLowerCase(); // перевод в нижний регистр элементов массива
animals.toUpperCase(); // перевод в верхний регистр элементов массива
Метод push() добавляет элемент в конец массива: animals.push(‘horses’);
Метод array.unshift() добавляет элемент в начало массива: animals.unshift(‘horses’);
Удалить элемент из массива можно с помощью специальной конструкции delete: delete arr[index]. После такого удаления, можно с удивлением заметить, что размер массива не изменяется.
Обращение по несуществующему индексу массива возвращает значение undefined.
Переменные (и константы) в JavaScript могут хранить два вида данных: примитивные и ссылочные. К примитивным относятся все примитивные типы: числа, строки, булеан и так далее. К ссылочным – объекты. Массив является объектом.
Метод .pop извлекает последний элемент из массива и удаляет его.
Метод reverse() – обратный порядок элементов
Метод sort() — сортировка
Некоторые методы изменяют исходный массив, а некоторые возвращают новый. Например, метод concat() возвращает новый массив.
Агрегацией называются любые вычисления, которые, как правило, строятся на основе всего набора данных, например, поиск максимального, среднего, суммы и так далее.
for…of – перебирает строку посимвольно, массив по элементам
for (const symbol of greeting) {
console.log(symbol);
}
Удаление элементов из массива
Инструкция delete лишь очищает значение, но сама ячейка никуда не девается
break производит выход из цикла.
Стекпозволяет пропустить итерацию цикла.
parts.join(»); — преобразовать массив в строку с разделителем указанным в скобках
методом строки split(), который разделяет строку на массив по разделителю, указанному в скобках
arr.includes(el) – массив arr содержит элемент el
метод flat() – выпрямляет массив, убирая вложенность
[[3, 2], 5, 3, [3, 4, 2], 10].flat(); // [3, 2, 5, 3, 3, 4, 2, 10]
Множества
_.intersection(friends1, friends2); //пересечение
_.union(friends1, friends2); // объединение
_.difference(friends1, friends2); // дополнение (библиотека logash)
Стек
Работа со стеком включает в себя следующие операции:
- Добавить в стек (push)
- Взять из стека, удалив (pop)
- Вернуть элемент с вершины стека без удаления (peek)
- Проверить на пустоту (isEmpty)
- Вернуть размер (size)
Деструктуризация (destructuring) – синтаксическая возможность «раскладывать» элементы массива (и не только) в отдельные константы или переменные.
const [firstElement, secondElement, thirdElement = 3] = [1, 2];
REST
const [first, ...rest] = fruits;
console.log(first); // 'apple'
console.log(rest); // ['orange', 'banana', 'pineapple']
SPREAD
spread-оператор — оператор имеет такой же синтаксис, но выполняет противоположную задачу. Он не сворачивает элементы, а наоборот, растягивает их. С его помощью обычно копируют или сливают массивы.
Rest-оператор появляется слева от знака равно, там, где происходит деструктуризация. Spread-оператор – справа от знака равно, там где массив формируется.
Spread-оператор, в отличии от rest-оператора может появляться в любой части массива.
Массивы в JavaScript содержат не сами данные, а ссылки (адреса в памяти) на них. Тогда становится не важно, что хранить. Любое значение в массиве – адрес, имеющий одинаковый размер независимо от данных, на которые он указывает. Такой подход делает массивы гибкими, но с другой стороны, более медленными.