Как проверить, является ли переменная массивом в JavaScript? [Дубликат]

Вы можете использовать SslStream . Ссылка на документацию содержит пример TCP-сервера и клиента, которые обмениваются данными через SSL.

1673
задан Andy McCluggage 20 April 2009 в 09:02
поделиться

4 ответа

Через Крокфорда :

function typeOf(value) {
    var s = typeof value;
    if (s === 'object') {
        if (value) {
            if (value instanceof Array) {
                s = 'array';
            }
        } else {
            s = 'null';
        }
    }
    return s;
}

Основное упоминание Крокфорда о неудаче - невозможность правильно определить массивы которые были созданы в другом контексте, например, окно . Эта страница имеет гораздо более сложную версию, если этого недостаточно.

47
ответ дан 22 November 2019 в 20:09
поделиться

Существует несколько решений со всеми их причудами. Эта страница дает хороший обзор. Одним из возможных решений является:

function isArray(o) {
  return Object.prototype.toString.call(o) === '[object Array]'; 
}
78
ответ дан 22 November 2019 в 20:09
поделиться

Я заметил, что кто-то упомянул jQuery, но я не знал, что была функция isArray () . Оказывается, он был добавлен в версии 1.3.

jQuery реализует его так, как предлагает Питер:

isArray: function( obj ) {
    return toString.call(obj) === "[object Array]";
},

Уже поверив в jQuery (особенно в его методы кросс-браузерной совместимости), я либо обновлюсь до версии 1.3, и используйте их функцию (при условии, что обновление не вызывает слишком много проблем) или используйте этот предложенный метод непосредственно в моем коде.

Большое спасибо за предложения.

77
ответ дан 22 November 2019 в 20:09
поделиться

Вы также можете использовать:

if (value instanceof Array) {
  alert('value is Array!');
} else {
  alert('Not an array');
}

Это кажется мне довольно элегантным решением, но для каждого свое.

Редактировать:

Начиная с ES5 теперь также:

Array.isArray(value);

Но это не работает в старых браузерах, если вы не используете полифиллы (в основном ... IE8 или аналогичные).

1039
ответ дан 22 November 2019 в 20:09
поделиться
Другие вопросы по тегам:

Похожие вопросы: