Перевірка на масив
1. Сучасний і надійний спосіб → Array.isArray()
javascript
Array.isArray(value);Це стандартний метод ES5, який спеціально створений для цієї перевірки. Повертає
true, якщо значення - масив, іfalse- в інших випадках.
Приклади для Array.isArray()
javascript
Array.isArray([1, 2, 3]); // true
Array.isArray([]); // true
Array.isArray('text'); // false
Array.isArray({ 0: 'a', 1: 'b', length: 2 }); // false
Array.isArray(null); // falseПрацює коректно навіть між різними контекстами (наприклад, iframe, window тощо). Це робить його єдиним 100% надійним способом.
2. Старий спосіб → instanceof Array
javascript
value instanceof ArrayПриклад:
javascript
console.log([1, 2, 3] instanceof Array); // true
console.log({} instanceof Array); // falseНедолік: якщо масив створений в іншому вікні або iframe, то перевірка дасть
false, тому що в нього інший конструкторArray.
javascript
// приклад (у псевдокоді)
iframe.contentWindow.Array !== window.Array;3. Альтернатива (вручну) → перевірка через Object.prototype.toString
javascript
Object.prototype.toString.call(value) === '[object Array]'Приклад:
javascript
console.log(Object.prototype.toString.call([1, 2, 3])); // "[object Array]"
console.log(Object.prototype.toString.call({})); // "[object Object]"Працює коректно, але виглядає громіздко: зараз майже завжди замінюється на
Array.isArray().
Порівняння всіх способів
| Метод | Повертає | Плюси | Мінуси |
|---|---|---|---|
Array.isArray() | true/false | Сучасний, надійний | Немає |
instanceof Array | true/false | Зрозумілий синтаксис | Не працює між різними контекстами |
Object.prototype.toString.call() | "[object Array]" | Працює завжди | Складний запис |
Приклади перевірки різних значень
javascript
console.log(Array.isArray([1, 2, 3])); // true
console.log(Array.isArray('hello')); // false
console.log(Array.isArray({ length: 0 })); // false
console.log(Array.isArray(new Array())); // true
console.log(Array.isArray(null)); // falseКоротко
Використовуй
Array.isArray(value): це найнадійніший і найзрозуміліший спосіб перевірити, чи є значення масивом.
Коротка відповідь
Для співбесідиPremium
Коротка відповідь допоможе вам впевнено відповідати на цю тему під час співбесіди.