Сводка

Метод Array.isArray() возвращает true, если объект является массивом и false, если он массивом не является.

Синтаксис

Array.isArray(obj)

Параметры

obj
Объект для проверки.

Возвращаемое значение

true если объект является Array; иначе, false.

Описание

За подробностям обращайтесь к статье «Абсолютно точное определение того, является ли JavaScript-объект массивом или нет».

Примеры

// Все следующие вызовы вернут true
Array.isArray([]);
Array.isArray([1]);
Array.isArray(new Array());
// Небольшой факт: Array.prototype сам является массивом:
Array.isArray(Array.prototype);

// Все следующие вызовы вернут false
Array.isArray();
Array.isArray({});
Array.isArray(null);
Array.isArray(undefined);
Array.isArray(17);
Array.isArray("Array");
Array.isArray(true);
Array.isArray(false);
Array.isArray({ __proto__: Array.prototype });

instanceof vs isArray

Когда проверяем экземпляр ArrayArray.isArray предпочтительней, чем instanceof, потому что он работает и с iframes.

var iframe = document.createElement('iframe');
document.body.appendChild(iframe);
xArray = window.frames[window.frames.length-1].Array;
var arr = new xArray(1,2,3); // [1,2,3]

// Correctly checking for Array
Array.isArray(arr);  // true
// Considered harmful, because doesn't work through iframes
arr instanceof Array; // false

Полифилл

Выполнение следующего кода перед любым другим кодом создаст метод Array.isArray(), если он ещё не реализован в браузере.

if (!Array.isArray) {
  Array.isArray = function(arg) {
    return Object.prototype.toString.call(arg) === '[object Array]';
  };
}

Спецификации

Спецификация Статус Комментарии
ECMAScript 5.1 (ECMA-262)
Определение 'Array.isArray' в этой спецификации.
Стандарт Изначальное определение. Реализована в JavaScript 1.8.5.
ECMAScript 2015 (6th Edition, ECMA-262)
Определение 'Array.isArray' в этой спецификации.
Стандарт  

Совместимость с браузерами

Update compatibility data on GitHub
КомпьютерыМобильныеServer
ChromeEdgeFirefoxInternet ExplorerOperaSafariAndroid webviewChrome для AndroidEdge MobileFirefox для AndroidOpera для AndroidiOS SafariSamsung InternetNode.js
Базовая поддержкаChrome Полная поддержка 5Edge Полная поддержка ДаFirefox Полная поддержка 4IE Полная поддержка 9Opera Полная поддержка 10.5Safari Полная поддержка 5WebView Android Полная поддержка ДаChrome Android Полная поддержка ДаEdge Mobile Полная поддержка ДаFirefox Android Полная поддержка 4Opera Android Полная поддержка ДаSafari iOS Полная поддержка ДаSamsung Internet Android Полная поддержка Даnodejs Полная поддержка Да

Легенда

Полная поддержка  
Полная поддержка

Смотрите также

Метки документа и участники

Внесли вклад в эту страницу: JorJeG, Mingun, ivan_k
Обновлялась последний раз: JorJeG,