Learn JavaScript

Array.of() - метод для создания массива из значений в JavaScript

Array.of() создаёт новый массив из переданных аргументов.

Главный плюс этого метода в том, что он всегда воспринимает аргументы как элементы массива. Именно поэтому Array.of() часто понятнее и безопаснее, чем Array().

Синтаксис

Array.of(element0, element1, ...)

Это статический метод Array, поэтому его вызывают так:

Array.of(1, 2, 3)

А не так:

// Ошибка
[1, 2, 3].of()

Что делает Array.of()

Метод берёт все переданные значения и собирает из них массив.

console.log(Array.of(1, 2, 3));       // [1, 2, 3]
console.log(Array.of("a", "b"));      // ["a", "b"]
console.log(Array.of(true, null));    // [true, null]

Если вызвать Array.of() без аргументов, получится пустой массив:

console.log(Array.of()); // []

Array.of(3) и Array(3)

Это самая важная разница.

console.log(Array.of(3)); // [3]
console.log(Array(3));    // [ <3 empty items> ]

Array.of(3) создаёт массив с одним элементом 3.

Array(3) создаёт массив длины 3 с пустыми слотами внутри.

Именно из-за этого Array.of() полезен, когда нужно явно создать массив из значений и не попасть в особое поведение Array().

Один аргумент

С Array.of() один аргумент всегда становится элементом массива, независимо от типа.

console.log(Array.of(3));        // [3]
console.log(Array.of("hello"));  // ["hello"]
console.log(Array.of(true));     // [true]

Это поведение предсказуемо и читается проще, чем Array(...).

Несколько аргументов

Если аргументов несколько, метод просто собирает их в массив.

const result = Array.of(10, 20, 30);

console.log(result);        // [10, 20, 30]
console.log(result.length); // 3

Когда это полезно

Array.of() удобно использовать, когда:

  • нужно создать массив из одного числа
  • хочется избежать путаницы с Array(length)
  • важна предсказуемость и читаемость кода

Пример:

const pageNumbers = Array.of(1);

console.log(pageNumbers); // [1]

Если бы здесь использовался Array(1), результат был бы совсем другим.

Array.of() и []

Во многих случаях массив по-прежнему проще создать через литерал:

const numbers = [1, 2, 3];

Но Array.of() особенно полезен там, где значения передаются как аргументы функции и нужно явно собрать их в массив.

Частые ошибки

Путать Array.of() и Array()

console.log(Array.of(5)); // [5]
console.log(Array(5));    // массив длины 5

Это не одно и то же.

Считать, что это метод массива

const arr = [1, 2, 3];

// arr.of(4); // Ошибка

Array.of() вызывается у конструктора Array, а не у готового массива.

Быстрая памятка

  • Array.of() создаёт массив из переданных значений
  • один аргумент всегда становится элементом массива
  • Array.of(3) возвращает [3]
  • Array(3) создаёт массив длины 3
  • Array.of() - это статический метод Array

Коротко

Array.of() - это удобный способ создать массив из аргументов без сюрпризов. Главное, что стоит запомнить: Array.of(3) возвращает [3], а Array(3) ведёт себя совсем иначе.