Перевірка на масив
1. Array.isArray(value) - сучасний і надійний спосіб
javascript
Array.isArray([1, 2, 3]); // true
Array.isArray("text"); // false
Array.isArray({}); // false- Працює у всіх сучасних браузерах і Node.js.
- Правильно визначає масиви навіть з інших контекстів (наприклад, з iframe).
- Це рекомендований спосіб перевірки.
2. instanceof Array - старий, але робочий
javascript
[1, 2, 3] instanceof Array; // true
"abc" instanceof Array; // falseОднак:
- Якщо масив створений в іншому вікні або фреймі, результат може бути хибним, тому що у кожного контексту свій конструктор
Array.
javascript
// Приклад проблеми:
const arr = window.frames[0].Array;
arr instanceof Array; // false3. Перевірка через Object.prototype.toString.call()
Цей спосіб універсальний для будь-яких типів (часто використовують у бібліотеках).
javascript
Object.prototype.toString.call([]); // "[object Array]"
Object.prototype.toString.call({}); // "[object Object]"
Object.prototype.toString.call("hi"); // "[object String]"4. Чому не typeof
javascript
typeof []; // "object"typeof не підходить, тому що масив - це об'єкт, і результат завжди "object".
Підсумок
| Метод | Повертає | Надійність | Коментар |
|---|---|---|---|
Array.isArray(value) | правильно | 5/5 | найкращий варіант |
value instanceof Array | правильно | 3/5 | залежить від контексту |
Object.prototype.toString.call(value) | правильно | 4/5 | універсальний, але громіздкий |
typeof value | "object" | 1/5 | не розрізняє масиви |
Висновок: Завжди використовуй
Array.isArray(value)- це найточніший і найкоротший спосіб.
Коротка відповідь
Для співбесідиPremium
Коротка відповідь допоможе вам впевнено відповідати на цю тему під час співбесіди.