Array.isArray()

Метод Array.isArray() з'ясовує, чи є передане значення масивом.
Array.isArray([1, 2, 3]);    // true
Array.isArray({foo: 123});   // false
Array.isArray('foobar');     // false
Array.isArray(undefined);    // false

Синтакс

Array.isArray(value)

Параметри

value
Значення, яке має бути перевірено.

Вертає

Значення true, якщо value є масивом; false — якщо ні.

Опис

Якщо передане значення є масивом, повертається true, інакше повертається false.

Більш докладні відомості дивіться у статті «Як з'ясувати абсолютно точно, чи є об'єкт у JavaScript масивом». При використанні екземпляра TypedArray завжди повертається false.

Приклади

//Всі наведені далі виклики вертають true:
Array.isArray([]);
Array.isArray([1]);
Array.isArray(new Array());
Array.isArray(new Array('a', 'b', 'c', 'd'));
Array.isArray(new Array(3));
// Маловідомий факт: 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(new Uint8Array(32));
Array.isArray({ __proto__: Array.prototype });

instanceof проти isArray

Для перевірки, чи є об'єкт екземпляром Array, метод Array.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]

// Коректна перевірка екземпляра Array
Array.isArray(arr);  // true
// Вважається небезпечним, бо не працює між фреймами
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)
The definition of 'Array.isArray' in that specification.
Standard Початкова виознака. Запроваджено у JavaScript 1.8.5.
ECMAScript 2015 (6th Edition, ECMA-262)
The definition of 'Array.isArray' in that specification.
Standard
ECMAScript Latest Draft (ECMA-262)
The definition of 'Array.isArray' in that specification.
Draft

Підтримка веб-переглядачами

Update compatibility data on GitHub
DesktopMobileServer
ChromeEdgeFirefoxInternet ExplorerOperaSafariAndroid webviewChrome for AndroidFirefox for AndroidOpera for AndroidSafari on iOSSamsung InternetNode.js
isArrayChrome Full support 5Edge Full support 12Firefox Full support 4IE Full support 9Opera Full support 10.5Safari Full support 5WebView Android Full support YesChrome Android Full support 18Firefox Android Full support 4Opera Android Full support YesSafari iOS Full support YesSamsung Internet Android Full support Yesnodejs Full support Yes

Legend

Full support  
Full support

Див. також