Array.from() — JavaScript — Дока
- Кратко
- Как пишется
- Пример
- Массив из строки
- Массив из Set
- Массив из NodeList
- Как понять
- На практике
- Николай Лопин советует
Кратко
СкопированоФункция Array создаёт новый массив на основе переданного объекта. Объект должен быть либо массивоподобным (как строка или объект arguments), либо итерируемым (как Set или Map).
Как пишется
СкопированоФункция Array принимает три аргумента, последние два из которых не обязательны:
- Объект, на основе которого создаётся массив.
- Функция преобразования элемента перед его добавлением в массив. Работает как метод
map.( ) 
- Значение, которое будет использоваться как
thisв функции из второго параметра.
Возвращает новый массив, составленный из элементов переданного объекта.
Пример
СкопированоМассив из строки
Скопированоconst arr = Array.from('дока')console.log(arr)// ['д', 'о', 'к', 'а']
const arr = Array.from('дока')
console.log(arr)
// ['д', 'о', 'к', 'а']
Массив из
Set Скопированоconst uniqueNumbers = new Set()uniqueNumbers.add(1)uniqueNumbers.add(2)uniqueNumbers.add(3)const arr = Array.from(uniqueNumbers)// [1, 2, 3]
const uniqueNumbers = new Set()
uniqueNumbers.add(1)
uniqueNumbers.add(2)
uniqueNumbers.add(3)
const arr = Array.from(uniqueNumbers)
// [1, 2, 3]
Массив из NodeList
СкопированоПолучить URL из всех ссылок на странице:
const linkElements = document.getElementsByTagName('a')const arrLinks = Array.from(linkElements, function(a) { return a.
href })
const linkElements = document.getElementsByTagName('a')
const arrLinks = Array.from(linkElements, function(a) { return a.href })
Как понять
СкопированоВ JavaScript и браузерных API есть много объектов, которые очень похожи на массив, но не являются им. Объекты могут выглядеть как массив, но не иметь всех методов массива: for, map, filter и так далее.
Такие объекты приходится превращать в массивы для удобства работы с ними или для интеграции с библиотеками. Array создан, чтобы решить проблему конвертации таких объектов в новый массив.
Array работает не со всеми объектами. Объект должен обладать одним из двух свойств, чтобы его получилось превратить в массив:
- Элементы объекта проиндексированы и объект имеет свойство
length.
Такие объекты называют массивоподобными, потому что именно эти свойства присущи массиву. Этим свойством обладают объекты arguments,Node,List HTML.Collection - Объект итерируемый, то есть реализует интерфейс
Iterable. Этим свойством обладают объектыSetиMap.
Array перебирает каждый элемент и добавляет его в новый массив. Если передан второй аргумент, то перед добавлением происходит преобразование элемента.
☝️
При создании массива происходит поверхностное копирование (shallow copy) элементов. Если объект, на основе которого создаётся массив, содержит вложенные структуры данных, то эти вложенные структуры скопированы не будут. При их изменении в объекте изменения будут видны и в полученном массиве.
На практике
СкопированоНиколай Лопин советует
Скопировано🛠 Если вызвать Array без аргументов, то произойдёт ошибка «TypeError: undefined is not iterable (cannot read property Symbol(Symbol.iterator))».
🛠 В подавляющем большинстве случаев второй и третий аргументы опускаются, но их использование может быть полезным сокращением кода.
Вместо последовательного вызова Array и .map:
const name = 'Mike'const spacedLetters = Array.from(name).map(function (letter) { return `*${letter}*`})console.log(spacedLetters)// ['*M*', '*i*', '*k*', '*e*']
const name = 'Mike'
const spacedLetters = Array.from(name).map(function (letter) {
return `*${letter}*`
})
console.log(spacedLetters)
// ['*M*', '*i*', '*k*', '*e*']
…можно записать один вызов Array со вторым аргументом:
const name = 'Mike'const spacedLetters = Array.from(name, function(letter) { return `*${letter}*` })
const name = 'Mike' const spacedLetters = Array.from(name, function(letter) { return `*${letter}*` })
При выполнении этого кода не создаётся промежуточный массив.
🛠 Можно использовать Array, чтобы генерировать последовательности значений без использования классического цикла for.
Для этого нужно создать объект, который соответствует требованиям — имеет свойство length и индексы. Так как размер массива не всегда совпадает с количеством элементов внутри, мы можем создать объект со свойством , но без индексированных элементов, и создавать такие элементы с помощью второго аргумента:
const nums = Array.from({length: 4}, function(value, index) { // value будет undefined return index * 2})console.log(nums)// [0, 2, 4, 6]
const nums = Array.from({length: 4}, function(value, index) {
// value будет undefined
return index * 2
})
console.
log(nums)
// [0, 2, 4, 6]
Оценка материалаЕсли вы нашли ошибку, отправьте нам пул-реквест!
Во время отправки формы что-то пошло не так. Попробуйте ещё раз?
Предыдущий материал←
.lengthctrl + alt + ←
Следующий материал→
Array.isArray( ) ctrl + alt + →
Работа с массивами js – курс для начинающих, 22 урока
Включено в курс
22 урока (видео и/или текст)
35 упражнений в тренажере
52 проверочных теста
Дополнительные материалы
Помощь в «Обсуждениях»
Доступ к остальным курсам платформы
Чему вы научитесь
- Определять массивы в коде и манипулировать ими
- Формировать и обрабатывать массивы в циклах
- Применять базовые алгоритмы и оценивать их сложность
- Использовать spread, rest и деструктуризацию
Описание
На этом курсе вы изучите массивы в JS.
Вы узнаете больше о синтаксисе, вложенных массивах и ссылках. В итоге научитесь обходить массивы, извлекать из них значения с помощью деструктуризации и использовать spread-оператор. Массивы пригодятся для решения множества алгоритмических задач. Знания из этого курса помогают программистам грамотно объединять данные в коллекции. Курс подойдет тем, кто продолжает изучать JS и хочет узнать больше о его возможностях. Чтобы учиться было проще, стоит заранее изучить курс по основам JS.
синтаксис алгоритмическая сложность теория множеств сортировка стек вложенные массивы
Программа курса
Продолжительность 27 часов
О курсе
Узнать о курсе, его структуре, задачах и целях.
теория
Синтаксис
Изучить синтаксис для работы с массивами
теория
тесты
упражнение
Модификация
Познакомиться с основными способами изменения массивов
теория
тесты
упражнениеПроверка существования значения
Разобрать типичные ошибки при работе с массивами: выход за границу, обращение к несуществующему ключу.

теория
тесты
упражнение
Цикл for
Научиться применять цикл for для массивов
теория
тесты
упражнение
Ссылки
Познакомиться с понятием «ссылочные данные» и узнать как правильно обрабатывать массивы в функциях.
теория
тесты
упражнение
Агрегация
Научиться агрегировать данные
теория
тесты
упражнение
Цикл for.
..ofНаучиться простому способу обходить массив
теория
тестыупражнение
Удаление элементов массива
Узнать о правильных и неправильных способах удаления элементов
теория
упражнение
Управляющие инструкции
Изучить работу `break` и `continue`
теория
тесты
упражнение
Вложенные массивы
Познакомиться с синтаксисом создания и обновления вложенных массивов
теория
тесты
упражнение
Генерация строки в цикле
Научиться эффективно собирать строки
теория
тесты
упражнение
Обработка строк через преобразование в массив
Узнать, как обрабатывать строки с помощью массивов
теория
упражнение
Вложенные циклы
Научиться вкладывать циклы друг в друга
теория
упражнение
Теория Множеств
Приобщиться к прекрасному
теория
тесты
упражнение
Сортировка массивов
Познакомиться с базовыми алгоритмами
теория
упражнение
Стек
Познакомиться с одной из самых фундаментальных структур данных
теория
тестыупражнение
Big O
Познакомиться с оценкой сложности алгоритмов
теория
тесты
упражнение
Деструктуризация
Научиться раскладывать массив на части
теория
тесты
упражнение
Rest и деструктуризация
Научиться сворачивать данные в массив
теория
тесты
упражнение
Spread и создание новых массивов
Научиться применять spread (синтаксис «расширения») для массивов.

теория
тесты
упражнение
Массивы в памяти компьютера
Познакомиться с тем, что из себя представляют массивы в реальности
теория
тесты
Формат обучения
Испытания
Это практические задания, которые мы советуем выполнить после завершения курса. Задания помогут вам получить дополнительный опыт в программировании и закрепить полученные навыки. Обычно мы рекомендуем выполнить 3-5 испытаний. Но если не получается, не отчаивайтесь. Просто вернитесь к ним позже
Все
Ольга Цаголова28 апреля 2020Спасибо большое за курс! Уже заметно, как все грамотно выстроено.
Благодаря курсу введение в программирование и доп задачам после, курс по массивом прошел легко, были, конечно трудности, но в принципе без сильных затычек.
Переходим к доп задачам после массивов, ох…
Evgeny Zhdanov18 ноября 2019
Спасибо за новый контент!
Курс не такой людоедский, как подавляющее большинство в профессии подрывающих самооценку и не менее познавательный.
Здорово, что в практиках курса используется императивный подход, потому как о нем забываешь решая задачи прочих курсов, зацикливаясь на рекурсиях, декларативном подходе в то время, как маловероятно, что попав в продакшн большинства проектов джуном ты встретишь систему сложенную из бест практис, а работать придется именно с ней.
Курс понравился)
Inna Badreeva15 марта 2023
Спасибо за курс, очень интересные задачки, и конечно пригодятся в будущем (например собеседованиях)
Владимир Филиппов04 мая 2022
Честно ? Не верил, что справлюсь.
Ругался, не понимал.
Ещё с первых строк ТЗ понял — это надолго.
В голове пустота, обрывки песен лезут в голову. Но я справился. Получилось меньше, чем у учителя. Смотрю на код учителя и страшно, сколько непонятных слов и действий и в голове снова мрак.
Спасибо, сегодня я снова сразился с самим собой.
Рекомендуемые программы
профессия
• от 6 300 ₽ в месяц
Фронтенд-разработчик
Разработка фронтенд-компонентов для веб-приложений
10 месяцев •
с нуляСтарт 22 июня
профессия
• от 6 300 ₽ в месяц
Node.js-разработчик
Разработка бэкенд-компонентов для веб-приложений
10 месяцев •
с нуляСтарт 22 июня
профессия
• от 10 080 ₽ в месяц
Fullstack-разработчик
Разработка фронтенд- и бэкенд-компонентов для веб-приложений
16 месяцев •
с нуляСтарт 22 июня
профессия
• от 6 300 ₽ в месяц
Инженер по автоматизированному тестированию на JavaScript
Автоматизированное тестирование веб-приложений на JavaScript
10 месяцев •
с нуляв разработке
дата определяется
Список методов массива JavaScript | by Mandeep Kaur
Чтение: 4 мин.
·
27 февраля 2020 г. © Mandeep KaurВ JavaScript массив — это структура данных, содержащая список элементов, в которых хранится несколько значений в одной переменной. Сила массивов JavaScript заключается в методах массива. Методы массива — это функции, встроенные в JavaScript, которые мы можем применять к нашим массивам. Каждый метод имеет уникальную функцию, которая выполняет изменение или вычисление нашего массива и избавляет нас от написания общих функций с нуля.
1. map()Этот метод создает новый массив с результатами вызова заданной функции для каждого элемента этого массива.
2. filter()
Этот метод создает новый массив только с элементами, которые передают условие внутри предоставленной функции.
3. sort()
Этот метод используется для упорядочивания/сортировки элементов массива в порядке возрастания или убывания.
4. forEach()
Этот метод помогает перебирать массив, выполняя предоставленную функцию обратного вызова для каждого элемента в массиве.
5. concat()
Этот метод используется для объединения двух или более массивов и возвращает новый массив без изменения существующих массивов.
6. Every( )
Этот метод проверяет каждый элемент массива, удовлетворяющий условию, возвращая значение true или false в зависимости от ситуации.
7. some()
Этот метод проверяет, удовлетворяет ли хотя бы один элемент массива условию, возвращая true или false в зависимости от ситуации.
8. include()
Этот метод проверяет, содержит ли массив элемент, удовлетворяющий условию, и возвращает значение true или false в зависимости от ситуации.
9. join()
Этот метод возвращает новую строку путем объединения всех элементов массива, разделенных указанным разделителем.
10. reduce()
Этот метод применяет функцию к аккумулятору и каждому элементу массива, чтобы уменьшить его до одного значения.
11. find()
Этот метод возвращает значение первого элемента массива, прошедшего проверку в функции тестирования.
12. findIndex()
Этот метод возвращает индекс первого элемента массива, прошедшего проверку в функции тестирования.
13. indexOf()
Этот метод возвращает индекс первого вхождения заданного элемента в массив или -1, если он не найден.
14. fill()
Этот метод заполняет элементы массива статическими значениями и возвращает измененный массив.
15. slice()
Этот метод возвращает новый массив с указанными элементами от начала до конца.
16. reverse()
Этот метод переворачивает массив на месте. Элемент с последним индексом будет первым, а элемент с индексом 0 будет последним.
17. push()
Этот метод добавляет один или несколько элементов в конец массива и возвращает новую длину массива.
18. pop()
Этот метод удаляет последний элемент из конца массива и возвращает этот элемент.
19. shift()
Этот метод удаляет первый элемент из массива и возвращает этот элемент.
20. unshift()
Этот метод добавляет один или несколько элементов в начало массива и возвращает новую длину массива.
Чтобы упростить работу с массивами в JavaScript, мы должны использовать методы массивов, чтобы упростить нашу работу и сделать код чище.
Спасибо, что прочитали.
Встроенный JavaScript: Массив: at | Могу ли я использовать… Таблицы поддержки для HTML5, CSS3 и т. д.
Могу ли я использовать Поиск ?Встроенный JavaScript: Массив: at
Глобальное использование
91,06% + 0% «=» 91,06%
IE
- 6 — 10: не поддерживается
- 11: не поддерживается
Edge
- 12 — 91: не поддерживается
- 92 — 113: Поддерживается
- 00% — Supported»> 114: Поддерживается
Firefox
- 2–89: не поддерживается
- 90–112: поддерживается
- 113: поддерживается
- 114–115: поддерживается
Chrome
- 4–91: не поддерживается
- 92–113: поддерживается
- 114: Поддерживается
- 115–117: Поддерживается
Safari
- 3.1–15.3: Не поддерживается
- 15.4–16.4: Поддерживается 901 10
- 16.5: Поддерживается
- 16.
6 — TP: Поддерживается
Opera
- 10–77: не поддерживается
- 78–98: поддерживается
- 99: поддерживается
Safari на iOS
- 3.2–15.3: не поддерживается
- 1 5,4–16,4: поддерживается
- 16,5: поддерживается
- 16.6–17: поддерживается
Opera Mini
- все: поддержка неизвестна
Браузер Android
- 2.1–4.4.4: не поддерживается 90 110
- 114: поддерживается
Opera Mobile
- 12 — 12.



from(name, function(letter) { return `*${letter}*` })