Как проверить, является ли объект массивом?
Массивы и структуры данных
Надёжный способ проверить, что значение — массив, это `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 для массива из iframeArray.isArray этой проблемы лишён, поэтому он предпочтителен.
Коротко для собеседования
Используйте Array.isArray(value) — это надёжный способ, работающий и между контекстами. typeof даёт 'object' для массивов, а instanceof Array ненадёжен между iframe/worker.