JavaScript | Как проверить на массив?

JavaScript | Как проверить на массив?

Как узнать, является ли переменная массивом?

У нас есть две переменные (massiv и chtoto):

var massiv = [21,20,98,99]

и

var chtoto = {aaa: 111}

 

Как узнать, является ли переменная массивом? Мы хотим получить логическое значение проверки переменной на массив — true или false.

  • Если переменная является массивом, тогда мы получаем истину — true.
  • Если переменная не является массивом, тогда получаем ложь — false.

Нам нужно обратиться к конструктору класса Array, который является частью языка JavaScript. Затем мы должны обратиться к его свойству isArray(), которое принимает один аргумент. В качестве параметра передаём в функцию нашу «проверяемую» переменную.

 

Видео

 

Как проверить именованные данные?

Array.isArray(massiv)
true
Array.isArray(chtoto)
false

Консольные выводы в браузере — передаём переменные в качестве аргумента:

JavaScript - Как проверить переменную на массив?
JavaScript — Как проверить переменную на массив?

 

Как узнать, является ли выражение массивом?

Как проверить не именованные данные?

В качестве аргумента функции isArray() прописываем «проверяемые» данные.

Array.isArray([21,20,98,99])
true
Array.isArray({aaa: 111})
false

Консольные выводы в браузере — передаём массив и объект в качестве аргумента:

JavaScript - Как проверить массив на массив? - Всегда получим истину true
JavaScript — Как проверить массив на массив? — Всегда получим истину true
JavaScript - Как проверить объект на массив? - Всегда получим ложь false
JavaScript — Как проверить объект на массив? — Всегда получим ложь false

Альтернативный способ

Мы можем воспользоваться свойством конструктора объекта и получить его имя класса. Если это имя будет равно «Array«, значит мы имеем дело с классическим массивом JavaScript, а не массиво-подобным объектом.

Пример

var massiv = [21,20,98,99];
var stroka = "sdvsvsv";
var obiekt = {a:"a"};
var funkciya = () => "";
var chislo = 1111;

Сравниваем

massiv.constructor.name == "Array"
true

stroka.constructor.name == "Array"
false

obiekt.constructor.name == "Array"
false

funkciya.constructor.name == "Array"
false

chislo.constructor.name == "Array"
false
Проверяем на массив свойством constructor и name - JavaScript
Проверяем на массив свойством constructor и name — JavaScript

 

Зачем нужно проверять на массив?

Задача проверки на массив часто встречается в сложных структурах данных, когда нужно погружаться на много уровней в глубину основного массива, чтобы извлекать необходимые данные. Выглядит примерно как рекурсивная распаковка данных — сначала достаём что на уровень ниже, потом то, что ещё на один уровень ниже …и так далее. Вот хороший пример, где нужно проверять на массив: Как узнать глубину каждого элемента массива?

Это очень похоже на то, когда вы приходите из магазина с пакетом еды. Вы точно знаете, что где-то внутри в большом пакете есть средний пакет с фруктами, в который вложен ещё один маленький пакет с яблоками. Так вот если вы хотите получить яблоко, то вы должны погрузиться в самый «глубоко-лежащий» пакет. Вы должны из большого пакета сначала достать средний, а потом из среднего достать маленький. И только потом достать яблоко.

 

Ссылки

JavaScript | Массивы (Array)

JavaScript | Объявление массива через квадратные скобки []

ECMAScriptLiving Standardhttps://tc39.es/ecma262/#sec-array.isarray

ECMAScriptLiving Standardhttps://tc39.es/ecma262/#sec-isarray

Свойства конструктора Array

Свойства объекта прототипа Array