Array.isArray() проверяет, является ли значение массивом.
Это стандартный и самый надёжный способ понять, перед нами массив или нет.
Синтаксис
Array.isArray(value)
Метод принимает одно значение и возвращает:
true, если это массивfalse, если это не массив
Что делает Array.isArray()
Если передать массив, метод вернёт true:
console.log(Array.isArray([])); // true
console.log(Array.isArray([1, 2, 3])); // true
console.log(Array.isArray(new Array())); // true
Если значение не является массивом, результат будет false:
console.log(Array.isArray("hello")); // false
console.log(Array.isArray({})); // false
console.log(Array.isArray(null)); // false
console.log(Array.isArray(undefined)); // false
Почему не typeof
Новички часто пытаются проверить массив через typeof, но это не работает как ожидается.
console.log(typeof []); // "object"
console.log(typeof {}); // "object"
И массив, и обычный объект дают "object", поэтому typeof не помогает отличить одно от другого.
Для такой проверки обычно используют именно Array.isArray().
Массив и объект, похожий на массив
Не всё, что имеет length и индексы, является настоящим массивом.
const arrayLike = {
0: "a",
1: "b",
length: 2,
};
console.log(Array.isArray(arrayLike)); // false
console.log(Array.isArray(["a", "b"])); // true
Это важный момент: array-like объект и массив - не одно и то же.
Array.isArray() и instanceof Array
Иногда массив проверяют так:
console.log([] instanceof Array); // true
Это может работать, но Array.isArray() обычно надёжнее и читается понятнее.
Именно его чаще используют в обычном коде:
if (Array.isArray(value)) {
console.log("Это массив");
}
Когда это полезно
Array.isArray() удобно использовать, когда:
- функция может получить массив или другое значение
- нужно проверить данные перед
map(),filter()илиforEach() - важно отличить массив от обычного объекта
Пример:
function printList(value) {
if (!Array.isArray(value)) {
console.log("Ожидался массив");
return;
}
console.log(value.join(", "));
}
Частые ошибки
Проверять массив через typeof
console.log(typeof []); // "object"
Так нельзя надёжно понять, что значение является массивом.
Считать, что объект с length - это массив
const value = { 0: "a", 1: "b", length: 2 };
console.log(Array.isArray(value)); // false
Наличие length ещё не делает значение массивом.
Считать, что это метод массива
const arr = [1, 2, 3];
// arr.isArray(); // Ошибка
Array.isArray() - это статический метод Array, а не метод экземпляра массива.
Быстрая памятка
Array.isArray()проверяет, является ли значение массивом- метод возвращает
trueилиfalse typeof []возвращает"object", поэтому для массива он не подходит- объект с
lengthне обязательно является массивом Array.isArray()- это статический методArray
Коротко
Array.isArray() - это стандартный способ проверить массив в JavaScript. Если нужно отличить массив от строки, null, объекта или array-like значения, обычно используют именно его.