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 | ||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
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 |