JS метод Array.isArray()
Опис
Метод Array.isArray()
дозволяє визначити, чи є конкретне значення масивом. Метод працює незалежно від класу Array
до якого він прив'язаний. Він повертає true
для будь-якого об'єкта, що був створений за допомогою літералу масиву або конструктора Array
. Цей метод виявився незамінним у контекстах, де конструктор Array
може відрізнятись, а також у ситуаціях, де використання оператора instanceof Array
може викликати проблеми.
Приклад:
const data = [1, 2, 3];
if (Array.isArray(data)) {
console.log('Це масив!');
} else {
console.log('Це не масив.');
}
Array.isArray()
також відкидає об'єкти, які мають у своєму ланцюжку прототипів Array.prototype
, але не є справжніми масивами. Останнє має велике значення, тому що такі об'єкти будуть визнані оператором instanceof Array
як масиви.
Слід пам'ятати, що в JavaScript існують об'єкти, які за своєю структурою можуть нагадувати масиви, але насправді такими не є. Наприклад:
- Об'єкти
NodeList
(списки вузлів, які отримуються при роботі з DOM). - Об'єкт
arguments
(спеціальний об'єкт, доступний всередині функцій для отримання переданих аргументів).
У таких випадках метод Array.isArray()
поверне false
, допомагаючи визначити справжні масиви.
Порада: | Завжди перевіряйте, чи існує цей метод у поточній версії JavaScript, яку використовуєте. Метод |
Порада: | Коли ви хочете впевнитися, що змінна є масивом, використовуйте |
Порада: | Зауважте, що метод |
Нотатка: | Не забувайте, що |
Порада: | Якщо ви працюєте з JSON-даними, які надходять з інших джерел, звертайте особливу увагу на структуру даних. Використання |
Синтаксис
Array.isArray(value)
Параметри
- *
value
Значення, яке потрібно перевірити.
Return
bool
true
, якщо значення є масивом; в іншому випадку,false
. Завжди повертаєтьсяfalse
, якщо значення є екземпляромTypedArray
.
Переглядачі
Переглядач | |||||
---|---|---|---|---|---|
4 |
4 |
5 |
10.5 |
12 |
Переглядач | ||||
---|---|---|---|---|
4.4 |
18 |
4 |
5 |
Переглядач | ||
---|---|---|
0.10.0 |
1.0 |
Приклади
Цей приклад демонструє використання функції Array.isArray()
для перевірки, чи об'єкт є масивом.
Використання Array.isArray()
.
// всі наступні виклики повертають 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
Array.isArray({ __proto__: Array.prototype });
При перевірці належності до типу масиву рекомендується використовувати функцію Array.isArray()
замість оператора instanceof
, оскільки вона працює у всіх контекстах.
// При перевірці належності до типу масиву рекомендується використовувати функцію Array.isArray() замість оператора instanceof, оскільки вона працює у всіх контекстах (реалмах).
const iframe = document.createElement("iframe");
document.body.appendChild(iframe);
const xArray = window.frames[window.frames.length - 1].Array;
const arr = new xArray(1, 2, 3); // [1, 2, 3]
// Правильна перевірка належності до масиву
Array.isArray(arr); // true
// Прототипом arr є xArray.prototype, який є
// відмінним об'єктом від Array.prototype
arr instanceof Array; // false