JS метод Array.from()


Опис

Array.from() - це спеціальний метод, який дозволяє формувати масиви з різних джерел:

  • ітерабельних об'єктів (наприклад, Map чи Set);
  • об'єктів, які нагадують масиви (мають властивість length та індексовані елементи).

Окрім основного завдання формування масивів, from() пропонує додатковий параметр mapFn, який дозволяє застосовувати функцію до кожного елемента масиву. Детальніше кажучи, виклик Array.from(obj, mapFn, thisArg) дорівнює Array.from(obj).map(mapFn, thisArg), проте не генерує додаткового масиву.

Коли використовується ітерабельний об'єкт, конструктор активується без додаткових аргументів. Якщо передається об'єкт схожий на масив, конструктор опрацьовує його довжину. Після ітераційного процесу встановлюється кінцева довжина масиву.

Приклад використання Array.from():

const set = new Set(["apple", "banana", "cherry"]);
const arrayFromSet = Array.from(set);
console.log(arrayFromSet); // ["apple", "banana", "cherry"]

У цьому прикладі ми конвертуємо Set в масив за допомогою методу Array.from(). Таким чином, ми отримали масив із елементами "apple", "banana", та "cherry".

Увага: Array.from() — це універсальний "фабричний" метод. Якщо підклас Array успадковує from(), цей метод буде повертати екземпляри підкласу, а не базовий Array.

автор: Bond

Порада

Якщо вам потрібно конвертувати стандартний об'єкт, який не є ітерабельним чи схожим на масив, скористайтеся методами Object.keys(), Object.values() чи Object.entries(). Для конвертації асинхронних ітерабельних об'єктів в масив існує Array.fromAsync().

автор: Bond
Нотатка

Метод from() приймає додатковий аргумент mapFn, який є опціональною функцією зворотнього виклику (callback). Ця функція може бути використана для маніпулювання елементами масиву під час їх створення. Наприклад, ви можете виконати деякі операції над елементами або змінити їх значення перед додаванням до нового масиву.

автор: Bond
Нотатка

Зверніть увагу, що метод from() не змінює вихідний об'єкт, але створює новий масив на основі ітерабельного об'єкта. Якщо вам потрібно змінити вихідний об'єкт, скористайтеся іншими методами маніпуляції з масивами, такими як map() або filter().

автор: Bond
Нотатка

Якщо this не представляє конструктор, за замовчуванням використовується базовий конструктор Array.

автор: Bond
Нотатка

Метод from() завжди створює нерозріджені масиви. Якщо у джерела відсутні деякі індекси, у новому масиві вони будуть представлені як undefined.

автор: Bond

Синтаксис

Array.from(arrayLike)
Array.from(arrayLike, mapFn)
Array.from(arrayLike, mapFn, thisArg)

Параметри

arrayLike

Ітерабельний або об'єкт, подібний до масиву, який буде перетворено на масив.

автор: Bond

mapFn

Функція, яка активується для кожного елемента масиву. При її вказівці кожне значення, що потрібно додати до масиву, спершу проходить крізь функцію mapFn. В результаті, у масив потрапляє не вихідне значення, а те, що було повернено mapFn.

Функція mapFn викликається з наступними аргументами:

  • element: поточний елемент, який обробляється у масиві;

  • index: індекс поточного елемента, який обробляється у масиві.

автор: Bond

thisArg

Значення, яке буде використовуватися як this під час виконання функції mapFn.

автор: Bond

Повернення

array

Новий екземпляр масиву.

автор: Bond

Переглядачі

Підтримка: стаціонарні переглядачі
Переглядач Google Chrome Mozilla Firefox Apple Safari Opera Microsoft EDGE Microsoft Internet Explorer
45 32 9 32 12
Підтримка: мобільні переглядачі
Переглядач Mobile Google Android Mobile Google Chrome Mobile Mozilla Firefox Mobile Apple Safari
45 45 32 9
Підтримка: серверні переглядачі
Переглядач Node.js Deno
4.0.0 1.0

Приклади

+ запропонувати свій приклад у пісочниці

У цьому прикладі за допомогою методу Array.from() створюється масив з рядка "foo". Кожен символ рядка стає окремим елементом масиву.

Array.from("foo");
// [ "f", "o", "o" ]
автор: Bond

У цьому прикладі метод from() викликається на конструкторній функції NotArray. Цей метод може перетворити ітерований об'єкт (Set) або об'єкт, схожий на масив, у новий масив.

function NotArray(len) {
  console.log("NotArray викликано з довжиною", len);
}

// Ітерований об'єкт
console.log(Array.from.call(NotArray, new Set(["foo", "bar", "baz"])));
// NotArray викликано з довжиною undefined
// NotArray { '0': 'foo', '1': 'bar', '2': 'baz', length: 3 }

// Об'єкт, схожий на масив
console.log(Array.from.call(NotArray, { length: 1, 0: "foo" }));
// NotArray викликано з довжиною 1
// NotArray { '0': 'foo', length: 1 }
автор: Bond

У цьому прикладі метод Array.from() використовується для створення масиву із рядка та масиву з використанням функції перетворення. Результати виводяться на екран.

автор: Bond

У цьому прикладі за допомогою методу Array.from() створюється масив із об'єкту, схожого на масив - arguments. Функція f() приймає довільну кількість аргументів, і всі ці аргументи стають елементами масиву, який повертається.

function f() {
  return Array.from(arguments);
}

f(1, 2, 3);

// [ 1, 2, 3 ]
автор: Bond

У цьому прикладі за допомогою методу Array.from() створюється масив з множини (Set). Множина містить значення "foo", "bar", "baz", але оскільки множина не може містити повторюваних значень, дублікат "foo" видаляється. Отриманий масив містить унікальні значення множини.

const set = new Set(["foo", "bar", "baz", "foo"]);
Array.from(set);
// [ "foo", "bar", "baz" ]
автор: Bond

Коментарі

Коментарів ще немає — будьте першим!

Відповідь для

Як форматувати текст?
Пишемо Виходить
**важливо**
*акцент*
~~застаріле~~
Виділення в тексті. Те саме роблять кнопки панелі, що спливає над виділеним.
## Як працює каскад
### Порядок оголошень
Заголовки всередині тексту. Найбільший не потрібен — він у сторінки вже є.
[[css/property/color]] Посилання на сторінку довідника. Наберіть [[ — поле саме підкаже шляхи, а хибний підкреслить хвилею.
[MDN](https://developer.mozilla.org) Посилання на чужий сайт.
![Схема каскаду](https://site.com/схема.png) Картинка. Опис обов'язковий: його читають пошуковик і незрячі.
Задайте `display: grid` контейнеру Код усередині речення.
```css
.card { display: grid }
```
Код блоком. Мова після трьох лапок вмикає підсвітку.
- Походження
1. Походження
Перелік: маркований і нумерований.
- [ ] дописати приклади
- [x] перевірити в Firefox
Перелік завдань із галочками. Пробіл у порожніх дужках обов'язковий.
> Порядок важить лише за рівної ваги. Цитата на всю ширину абзацу.
Специфічність
: вага селектора; більша перемагає
Список означень: термін, а під ним пояснення з відступом. Пробіл після двокрапки обов'язковий.
Каскад має три критерії[^1]
[^1]: Походження, специфічність, порядок.
Виноска: номер у тексті, примітка внизу сторінки. Без згадки [^1] у тексті примітка не з'явиться.
Відповідь: ||сорок два|| Ховає те, що між рисками: читач бачить на цьому місці розмиту пляму, а решта речення лишається звичайною. Клац — і текст відкрито.
|| Показати рішення
Задайте контейнеру `display: grid`.
||
Ховає цілі абзаци. На сторінці видно лише підпис із першого рядка («Показати рішення»), решта розгортається клацанням по ньому. Закривні риски — окремим рядком.
Порожній рядок Новий абзац. Щоб перенести рядок усередині абзацу, поставте \ в його кінці.

Увійдіть — коментар з'явиться одразу, без капчі й очікування перевірки.

Пропозиція правки

Ваша версія — : після перевірки замінить чинну. Нова порада чи нотатка — з'явиться на сторінці після перевірки.

Як форматувати текст?
Пишемо Виходить
**важливо**
*акцент*
~~застаріле~~
Виділення в тексті. Те саме роблять кнопки панелі, що спливає над виділеним.
## Як працює каскад
### Порядок оголошень
Заголовки всередині тексту. Найбільший не потрібен — він у сторінки вже є.
[[css/property/color]] Посилання на сторінку довідника. Наберіть [[ — поле саме підкаже шляхи, а хибний підкреслить хвилею.
[MDN](https://developer.mozilla.org) Посилання на чужий сайт.
![Схема каскаду](https://site.com/схема.png) Картинка. Опис обов'язковий: його читають пошуковик і незрячі.
Задайте `display: grid` контейнеру Код усередині речення.
```css
.card { display: grid }
```
Код блоком. Мова після трьох лапок вмикає підсвітку.
- Походження
1. Походження
Перелік: маркований і нумерований.
- [ ] дописати приклади
- [x] перевірити в Firefox
Перелік завдань із галочками. Пробіл у порожніх дужках обов'язковий.
> Порядок важить лише за рівної ваги. Цитата на всю ширину абзацу.
Специфічність
: вага селектора; більша перемагає
Список означень: термін, а під ним пояснення з відступом. Пробіл після двокрапки обов'язковий.
Каскад має три критерії[^1]
[^1]: Походження, специфічність, порядок.
Виноска: номер у тексті, примітка внизу сторінки. Без згадки [^1] у тексті примітка не з'явиться.
Відповідь: ||сорок два|| Ховає те, що між рисками: читач бачить на цьому місці розмиту пляму, а решта речення лишається звичайною. Клац — і текст відкрито.
|| Показати рішення
Задайте контейнеру `display: grid`.
||
Ховає цілі абзаци. На сторінці видно лише підпис із першого рядка («Показати рішення»), решта розгортається клацанням по ньому. Закривні риски — окремим рядком.
Порожній рядок Новий абзац. Щоб перенести рядок усередині абзацу, поставте \ в його кінці.

Ви гість — діють добові ліміти. Увійдіть, щоб пропонувати без капчі.

Ваша версія секції «»: після перевірки замінить чинну.

Як форматувати текст?
Пишемо Виходить
**важливо**
*акцент*
~~застаріле~~
Виділення в тексті. Те саме роблять кнопки панелі, що спливає над виділеним.
## Як працює каскад
### Порядок оголошень
Заголовки всередині тексту. Найбільший не потрібен — він у сторінки вже є.
[[css/property/color]] Посилання на сторінку довідника. Наберіть [[ — поле саме підкаже шляхи, а хибний підкреслить хвилею.
[MDN](https://developer.mozilla.org) Посилання на чужий сайт.
![Схема каскаду](https://site.com/схема.png) Картинка. Опис обов'язковий: його читають пошуковик і незрячі.
Задайте `display: grid` контейнеру Код усередині речення.
```css
.card { display: grid }
```
Код блоком. Мова після трьох лапок вмикає підсвітку.
- Походження
1. Походження
Перелік: маркований і нумерований.
- [ ] дописати приклади
- [x] перевірити в Firefox
Перелік завдань із галочками. Пробіл у порожніх дужках обов'язковий.
> Порядок важить лише за рівної ваги. Цитата на всю ширину абзацу.
Специфічність
: вага селектора; більша перемагає
Список означень: термін, а під ним пояснення з відступом. Пробіл після двокрапки обов'язковий.
Каскад має три критерії[^1]
[^1]: Походження, специфічність, порядок.
Виноска: номер у тексті, примітка внизу сторінки. Без згадки [^1] у тексті примітка не з'явиться.
Відповідь: ||сорок два|| Ховає те, що між рисками: читач бачить на цьому місці розмиту пляму, а решта речення лишається звичайною. Клац — і текст відкрито.
|| Показати рішення
Задайте контейнеру `display: grid`.
||
Ховає цілі абзаци. На сторінці видно лише підпис із першого рядка («Показати рішення»), решта розгортається клацанням по ньому. Закривні риски — окремим рядком.
Порожній рядок Новий абзац. Щоб перенести рядок усередині абзацу, поставте \ в його кінці.

Ви гість — діють добові ліміти. Увійдіть, щоб пропонувати без капчі.

Ваша версія опису «»: після перевірки замінить чинну.

Як форматувати текст?
Пишемо Виходить
**важливо**
*акцент*
~~застаріле~~
Виділення в тексті. Те саме роблять кнопки панелі, що спливає над виділеним.
## Як працює каскад
### Порядок оголошень
Заголовки всередині тексту. Найбільший не потрібен — він у сторінки вже є.
[[css/property/color]] Посилання на сторінку довідника. Наберіть [[ — поле саме підкаже шляхи, а хибний підкреслить хвилею.
[MDN](https://developer.mozilla.org) Посилання на чужий сайт.
![Схема каскаду](https://site.com/схема.png) Картинка. Опис обов'язковий: його читають пошуковик і незрячі.
Задайте `display: grid` контейнеру Код усередині речення.
```css
.card { display: grid }
```
Код блоком. Мова після трьох лапок вмикає підсвітку.
- Походження
1. Походження
Перелік: маркований і нумерований.
- [ ] дописати приклади
- [x] перевірити в Firefox
Перелік завдань із галочками. Пробіл у порожніх дужках обов'язковий.
> Порядок важить лише за рівної ваги. Цитата на всю ширину абзацу.
Специфічність
: вага селектора; більша перемагає
Список означень: термін, а під ним пояснення з відступом. Пробіл після двокрапки обов'язковий.
Каскад має три критерії[^1]
[^1]: Походження, специфічність, порядок.
Виноска: номер у тексті, примітка внизу сторінки. Без згадки [^1] у тексті примітка не з'явиться.
Відповідь: ||сорок два|| Ховає те, що між рисками: читач бачить на цьому місці розмиту пляму, а решта речення лишається звичайною. Клац — і текст відкрито.
|| Показати рішення
Задайте контейнеру `display: grid`.
||
Ховає цілі абзаци. На сторінці видно лише підпис із першого рядка («Показати рішення»), решта розгортається клацанням по ньому. Закривні риски — окремим рядком.
Порожній рядок Новий абзац. Щоб перенести рядок усередині абзацу, поставте \ в його кінці.

Ви гість — діють добові ліміти. Увійдіть, щоб пропонувати без капчі.

Зворотний зв'язок
Вхід