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, яку використовуєте. Метод
автор: BondArray.isArray()був введений у стандарті ECMAScript 5, тому переконайтеся, що ви працюєте зі сумісною версією мови. - Порада
-
Коли ви хочете впевнитися, що змінна є масивом, використовуйте
автор: BondArray.isArray()замість інших методів перевірки типу, таких якtypeofабоinstanceof. Це запобігає можливим проблемам, особливо якщо ви маєте справу з багатомірними масивами або масивами, створеними у різних вікнах чи фреймах. - Порада
-
Зауважте, що метод
автор: BondArray.isArray()стає особливо корисним у сучасних JavaScript-додатках, де масиви можуть походити з різних контекстів або фреймів (наприклад, в великих веб-додатках або при роботі з іншими бібліотеками і фреймворками). - Порада
-
Якщо ви працюєте з JSON-даними, які надходять з інших джерел, звертайте особливу увагу на структуру даних. Використання
автор: BondArray.isArray()може виявитись корисним для перевірки, чи є об'єкт масивом, перед тим як проводити з ним операції. - Нотатка
-
Не забувайте, що
автор: BondArray.isArray()приймає один аргумент - об'єкт, який ви перевіряєте. Він повернеtrue, якщо це масив, іfalse, якщо це не масив. Будьте уважні, щоб передати правильний об'єкт у метод для отримання очікуваного результату.
Синтаксис
Array.isArray(value)
Параметри
value-
Значення, яке потрібно перевірити.
автор: Bond
Повернення
bool-
автор: Bondtrue, якщо значення є масивом; в іншому випадку,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
Коментарі
Коментарів ще немає — будьте першим!