PassFront
  1. PassFront
  2. База знаний
  3. Массивы и структуры данных

Как проверить, является ли объект массивом?

Массивы и структуры данных

Надёжный способ проверить, что значение — массив, это `Array.isArray(value)`. Он работает корректно во всех случаях, включая массивы из других контекстов (iframe).

Правильный способ

Array.isArray([1, 2, 3]); // true
Array.isArray('abc');     // false
Array.isArray({ length: 0 }); // false

Почему не typeof

typeof не отличает массив от объекта:

typeof [];  // 'object' — бесполезно для проверки

Альтернатива — toString

Универсальная, но многословная проверка через внутренний тег:

Object.prototype.toString.call([]); // '[object Array]'

Почему не instanceof

instanceof Array ломается для массивов из другого realm (iframe/worker), потому что там свой конструктор Array:

arr instanceof Array; // может дать false для массива из iframe

Array.isArray этой проблемы лишён, поэтому он предпочтителен.

Коротко для собеседования

Используйте Array.isArray(value) — это надёжный способ, работающий и между контекстами. typeof даёт 'object' для массивов, а instanceof Array ненадёжен между iframe/worker.

Другие вопросы раздела