Array.isArray() в JavaScript

Array.isArray() проверяет, является ли значение массивом.

let numbers = [10, 20, 30];

console.log(Array.isArray(numbers));

Результат:

true

Переменная numbers хранит массив, поэтому метод вернул true.

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

Array.isArray() возвращает true, если переданное значение является массивом. Во всех остальных случаях будет false.

console.log(Array.isArray(['HTML', 'CSS'])); // true
console.log(Array.isArray('HTML')); // false
console.log(Array.isArray(10)); // false

Метод не смотрит на содержимое массива. Ему важно только, массив это или нет.

Синтаксис

Общая запись выглядит так:

Array.isArray(value)

value - значение, которое нужно проверить.

let users = ['Анна', 'Олег'];
let result = Array.isArray(users);

console.log(result);

Результат:

true

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

let users = ['Анна', 'Олег'];

console.log(Array.isArray(users)); // правильно

Проверка разных значений

Метод удобно использовать, когда значение может прийти из разных мест: из функции, формы, API или другого участка кода.

console.log(Array.isArray([])); // true
console.log(Array.isArray({})); // false
console.log(Array.isArray(null)); // false
console.log(Array.isArray(undefined)); // false

Если результат true, значит с этим значением можно работать как с массивом.

Почему не typeof

Оператор typeof не подходит для точной проверки массива.

console.log(typeof []);
console.log(typeof {});

Результат:

object
object

И массив, и обычный объект дают ‘object’. Поэтому, если нужно отличить массив от объекта, используйте Array.isArray().

console.log(Array.isArray([])); // true
console.log(Array.isArray({})); // false

Пустой массив

Пустой массив тоже считается массивом.

let items = [];

console.log(Array.isArray(items)); // true
console.log(items.length); // 0

Array.isArray() проверяет тип значения, а не количество элементов внутри.

Проверка перед работой с массивом

Часто проверку делают перед тем, как вызывать методы массива.

function showItems(items) {
  if (!Array.isArray(items)) {
    return;
  }

  for (let item of items) {
    console.log(item);
  }
}

showItems(['HTML', 'CSS', 'JavaScript']);
showItems('HTML');

Если передать не массив, функция просто завершится и не попытается перебирать значение как список.

Объекты и массивы

Массивы и объекты похожи тем, что оба могут хранить несколько значений. Но для JavaScript это разные структуры.

let user = { name: 'Анна', age: 25 };
let skills = ['HTML', 'CSS'];

console.log(Array.isArray(user)); // false
console.log(Array.isArray(skills)); // true

Если нужно проверить обычный объект, Array.isArray() не подойдет. Этот метод отвечает только на вопрос: массив это или нет.

Итого

Array.isArray() проверяет, является ли значение массивом.

  • Array.isArray(value) возвращает true или false.
  • Пустой массив тоже вернет true.
  • typeof не отличает массив от обычного объекта.
  • Метод удобно использовать перед перебором или вызовом методов массива.
  • Array.isArray() проверяет только сам факт массива, а не его содержимое.