Array.isArray()

Статичний метод Array.isArray() ("чи є масивом") з'ясовує, чи є передане значення примірником Array.

Спробуйте його в дії

Синтаксис

Array.isArray(value)

Параметри

value (значення)

Значення до перевірки.

Повернене значення

true, якщо значення – то Array, інакше – false. Якщо value – примірник TypedArray, то поверненим значенням обов'язково буде false.

Опис

Array.isArray() перевіряє, чи є передане значення примірником Array. Він не перевіряє ланцюжок прототипів значення, а також не покладається на конструктор Array, до котрого прикріплений. Він повертає true для будь-якого значення, що було створене за допомогою синтаксису літерала масиву чи конструктора Array. Завдяки цьому можна безпечно застосовувати Array.isArray() до міжцаринних об'єктів, для котрих ідентичність конструктора Array відрізняється, а отже – instanceof Array не матиме успіху.

Більше подробиць у статті "З'ясування з досконалою точністю того, чи є певний об'єкт JavaScript масивом" (англ.).

Крім того, Array.isArray() відкидає об'єкти, котрі мають у своєму ланцюжку прототипів Array.prototype, але насправді не є масивами, – instanceof Array їх би прийняв.

Приклади

Застосування Array.isArray()

// усі виклики нижче повертають true
Array.isArray([]);
Array.isArray([1]);
Array.isArray(new Array());
Array.isArray(new Array("а", "б", "в", "г"));
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
Array.isArray({ __proto__: Array.prototype });

instanceof проти Array.isArray()

При перевірці на належність примірника Array слід віддавати перевагу Array.isArray() замість instanceof, тому що Array.isArray() коректно працює з об'єктами з різних царин.

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

// Коректна перевірка на Array
Array.isArray(arr); // true
// Вважається шкідливою практикою, адже не працює крізь iframe
arr instanceof Array; // false

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

Сумісність із браузерами

desktop mobile server
Chrome Edge Firefox Internet Explorer Opera Safari WebView Android Chrome Android Firefox for Android Opera Android Safari on iOS Samsung Internet Deno Node.js
isArray
Chrome Full support 5
Edge Full support 12
Firefox Full support 4
Internet Explorer Full support 9
Opera Full support 10.5
Safari Full support 5
WebView Android Full support 1
Chrome Android Full support 18
Firefox for Android Full support 4
Opera Android Full support 14
Safari on iOS Full support 5
Samsung Internet Full support 1.0
Deno Full support 1.0
Node.js Full support 0.10.0

Дивіться також