Sobes.tech
Junior
105
questionbank

Как можно проверить, что данное поле является массивом?

Ответ от нейросети

sobes.tech AI

Существует несколько способов проверить, является ли данное поле массивом:

  1. Array.isArray(): Наиболее предпочтительный и современный способ.

    // Проверяет, является ли значение массивом.
    // Возвращает true или false.
    Array.isArray([]); // true
    Array.isArray({}); // false
    Array.isArray(null); // false
    Array.isArray(undefined); // false
    Array.isArray(123); // false
    Array.isArray('строка'); // false
    
  2. instanceof Array: Работает для массивов, созданных в текущем фрейме.

    // Проверяет, является ли объект экземпляром класса Array.
    // Может давать некорректный результат при работе с iframe.
    [] instanceof Array; // true
    new Array() instanceof Array; // true
    ({}); // false
    
  3. Object.prototype.toString.call(): Надежный способ, обходящий проблемы с instanceof в разных фреймах.

    // Возвращает строковое представление типа объекта.
    // Для массивов возвращает "[object Array]".
    Object.prototype.toString.call([]); // "[object Array]"
    Object.prototype.toString.call({}); // "[object Object]"
    Object.prototype.toString.call(null); // "[object Null]"
    Object.prototype.toString.call(undefined); // "[object Undefined]"
    
  4. Проверка свойства constructor: Менее надежно, так как свойство constructor может быть изменено.

    // Проверяет, равен ли конструктор объекта Array.
    [].constructor === Array; // true
    ({}).constructor === Object; // false
    

Наиболее рекомендуемым и надежным в большинстве случаев является использование Array.isArray().