33

Как проверить, является ли объект массивом?

19

Я пытаюсь написать функцию, которая принимает либо список строк, либо одну строку. Если это строка, то я хочу преобразовать её в массив с единственным элементом, чтобы потом можно было перебрать его без опасения получить ошибку.

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

4 ответ(ов)

13

Сначала я бы проверил, поддерживает ли ваша реализация функцию isArray:

if (Array.isArray)
    return Array.isArray(v);

Также вы можете попробовать использовать оператор instanceof:

v instanceof Array
1

Этот метод является самым быстрым среди всех существующих (поддерживает все браузеры):

function isArray(obj){
    return !!obj && obj.constructor === Array;
}

Функция isArray проверяет, является ли переданный объект массивом. Она делает это, проверяя, что объект не является null или undefined (с помощью !!obj), а затем сравнивает его конструктор с Array. Этот подход эффективен, так как использует прямое сравнение с конструктором массива, что делает его очень быстрым в исполнении.

0

Вот простой способ проверить, является ли объект массивом, с помощью функции:

function isArray(object) {
    return object.constructor === Array;
}

Эта функция возвращает true, если переданный объект — это массив, и false в противном случае. Однако стоит отметить, что этот метод не учитывает случаи, когда объект был создан в другом контексте (например, в iframe).

Для более надежной проверки можно использовать метод Array.isArray():

function isArray(object) {
    return Array.isArray(object);
}

Этот способ является более предпочтительным, так как он правильно работает для массивов, созданных в различных контекстах.

0

Для проверки, является ли переменная x массивом, можно использовать одно строчное решение:

x instanceof Array;

Это выражение вернёт true, если x является массивом, и false, если нет.

Чтобы ответить на вопрос, пожалуйста, войдите или зарегистрируйтесь