Array
Создание массива
Типы значений массива и получение значений
Длина массива, свойство length
Можно обрезать длину массива
Доступ к массиву
Т.к. массив является объектом и, следовательно, ведёт себя как объект. Например, копируется по ссылке.
Копирование массива по ссылке
Способы копирования массивов
Изменение значений массива
Методы массивов
Метод() | Для чего | Что возвращает | Мутирует ли исходный массив |
---|---|---|---|
push | добавляет элемент в конец массива | новую длину массива | да |
pop | удаляет последний элемент | удаленный элемент | да |
map | нет | ||
filter | ищет все элементы, на которых функция-колбэк вернет true | создаёт новый массив, в который войдут только отфильтрованные элементы | нет |
concat | склеивает массивы (можно, несколько) | не мутирует исходные массивы, а создает новый | нет |
every | |||
find | |||
findIndex | |||
forEach | выполняет указанную функцию один раз для каждого элемента в массиве | ничего | нет |
from | |||
join | склеивает элементы массива в строку | зависит от разделителя ('...') | нет |
reduce | Агрегация данных (сумма, произведение, среднее значение) или трансформация данных (для преобразования элементов массива в другую структуру данных) | конечное значение, полученное после применения функции обратного вызова ко всем элементам массива. | нет |
reverse | да | ||
shift | удаляет первый элемент | удаленный элемент | да |
slice | чтобы из массива получить подмассив | новый подмассив | нет |
some | |||
sort | да | ||
splice | да | ||
unshift | добавляет в начало | новую длину | да |
indexOf | Поиск индекса элемента в массиве | индекс (если его нет, вернет -1) | нет |
// ! Изучая любой метод массива, запомните: // * 1. Что делает / для чего он? // * 2. Что он возвращает? // * 3. Мутирует ли он исходный массив?
push добавляет элемент в конец массива shift удаляет элемент в начале (так что второй элемент становится первым) pop удаляет последний элемент в массиве unshift добавляет элемент в начало массива delete удаление конкретных элементов splice добавляет, удаляет и заменяет элементы slice создает новый массив, в который копирует часть, либо весь массив concat создает дубль массива и может дополнить его значениями Array.from static method creates a new, shallow-copied Array instance from an iterable or array-like object.
push
добавляет элемент в конец массива
shift
удаляет элемент в начале (так что второй элемент становится первым)
pop
удаляет последний элемент в массиве
unshift
добавляет элемент в начало массива
delete
удаление конкретных элементов
splice
добавляет, удаляет и заменяет элементы
arr.splice(index[, deleteCount, elem1, ..., elemN]);
удаляем элемент
удаляем элемент и возвращаем его в переменную
заменяем элементы
добавляем элементы
slice
создает новый массив, в который копирует часть, либо весь массив
arr.slice([start], [end]) НЕ включая [end]
копируем часть массива
копируем весь массив
concat
создает новый массив, в который копирует данные из других массивов и дополнительные значения (в конец массива)
arr.concat(arg1, arg2...)
Array.from()
Поиск в массиве
arr.indexOf(item, from) ищет item, начиная с индекса from, и возвращает индекс, на котором был найден искомый элемент, в противном случае -1 arr.lastIndexOf(item, from) - то же самое, но ищет справа налево arr.includes(item, from) - ищет item, начиная с индекса from, и возвращает true, если поиск успешен arr.find - поиск в массиве объектов с определённым условием arr.findIndex - то же самое, но возвращает не элемент, а его ключ (позиция) arr.filter - ищет все элементы, на которых функция-колбэк вернет true
методы indexOf/lastIndexOf и includes - аналоги строковым методам
indexOf
ищет item, начиная с индекса from, и возвращает индекс, на котором был найден искомый элемент, в противном случае -1
includes
ищет item, начиная с индекса from, и возвращает true, если поиск успешен
find
поиск в массиве объектов с определённым условием
findIndex
то же самое, но возвращает не элемент, а его ключ (позиция)
filter
ищет все элементы, на которых функция-колбэк вернет true More filter
Сортировка массивов
методы: sort(fn) сортирует массив на месте, меняя в нём порядок элементов reverse меняет порядок элементов в массиве на обратный
sort(fn)
сортировка слов
cортировка чисел
функция сортировки
reverse
Преобразование массивов
методы: map вызывает функцию для каждого элемента массива и возвращает массив результатов выполнения этой функции split преобразовывает строку в массив по заданному разделителю join преобразовывает массив в строку с заданным разделителем
map
split
str.split(delim)
join
arr.join(glue)
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/join
Массив или объект?
Проверка Array.isArray()
Напомним, что массивы не образуют отдельный тип данных. Они основаны на объектах.
Перебор элементов
цикл for получение и значения и ключа массива цикл for..of для вывода значений (без ключа) метод forEach выполняет функцию для каждого элемента массива методы reduce/reduceRight для вычисления какого-нибудь единого значения на основе всего массива
for
for..of
соблюдает массивную индексацию
forEach
reduce/reduceRight
Если мы совсем не укажем начальное значение, то оно будет равно первому элементу массива
Метод reduceRight работает аналогично, но проходит по массиву справа налево.
ДОПОЛНЕНИЕ
// МАССИВ ИСПОЛЬЗУЕМ КАК МАССИВ
/* Следует помнить, что массив является объектом и, следовательно, ведёт себя как объект. */
let arr = ['Ваня', 'Иштван', 'Оля',]; console.log(typeof arr);
// Добавление нечислового свойства arr.name = "Коля"; console.log(arr); // 'Ваня', 'Иштван', 'Оля', name: 'Коля'
/* Но то, что действительно делает массивы особенными - это их внутреннее представление. Движок JS старается хранить элементы массиво в непрерывной области памяти, один за другим. Существуют и другие способы оптимизации, благодаря которым массивы работают очень быстро.
Но все они утратят эффективность, если мы перестанем работать с массивом, как с "упорядоченной коллекцией данных" и начнем использовать его как объект.
Варианты неправильного применения массива:
Добавление нечислового свойства, например: arr.test = 5;
Создание "дыр", например: добавление arr[0], затем arr[1000](между ними ничего нет)
Заполнение массива в обратном порядке, напр.: arr[1000], arr[999] и т.д. */
МАССИВ ЯВЛЯЕТСЯ ОБЪЕКТОМ ПОЭТОМУ ВЕДЕТ СЕБЯ КАК ОБЪЕКТ
Методы push/pop выполняются быстро, а методы shift/unshift - медленно.
Так, операция unshift должна выполнить 3 действия:
Добавить элемент с индексом 0
Сдвинуть все элементы вправо, заново пронумеровать их, заменив 0 на 1, 1 на 2 и т.д.
Обновить свойство length.
А вот метод push:
добавить элемент в конец
увеличить значение length
*/
К МЕТОДАМ МАССИВОВ /* Варианты применения массивов:
I. ОЧЕРЕДЬ или упорядоченная коллекция элементов. Очередь поддерживает 2 вида операций:
Добавление элемента в конец очереди.
Удаление элемента в начале, сдвигая очередь, так что второй элемент становится первым.
II. Структура данных, называемая СТЕК. Стек поддерживает 2 вида операций:
Добавление элемента в конец,
Удаление последнего элемента.
*/
// МЕТОДЫ // reduce/reduceRight
/*
Если нам нужно перебрать массив - мы можем использовать forEach, for или for..of. Если нам нужно перебрать массив и вернуть данные для каждого элемента - мы используем map.
Методы arr.reduce и arr.reduceRight похожи на эти методы, но они немного сложнее и используются для вычисления какого-нибудь единого значения на основе всего массива.
https://learn.javascript.ru/array
Удаление "пустых" элементов в массиве (необходимо проверить код)
Визуализация других методов https://ghost-together.medium.com/map-filter-and-reduce-animated-7fe391a35a47
Статья на freecodecamp https://www.freecodecamp.org/news/javascript-map-reduce-and-filter-explained-with-examples/
Last updated