Как мне определить, является ли аргумент массивом, потому что он typeof []
возвращает, 'object'
а я хочу различать массивы и объекты.
Возможно, этот объект будет выглядеть так, {"0":"string","1":"string","length":"2"}
но я не хочу, чтобы он выглядел как массив, если на самом деле это объект, похожий на массив.
JSON.parse
и JSON.stringify
умеют это различать. Как я могу это сделать?
Я использую Node.JS, который основан на V8 так же, как и Chrome.
util
библиотека -require('util').isArray(arr)
nodejs.org/api/util.html#util_util_isarray_objectarr instanceof Array
сбой. ОднакоArray.isArray()
отлично работает.Попробуйте этот код:
Array.isArray(argument)
источник
Как насчет:
your_object instanceof Array
В V8 в Chrome я получаю
[] instanceof Array > true ({}) instanceof Array > false ({"0":"string","1":"string","length":"2"}) instanceof Array > false
источник
Похоже, на этот вопрос есть несколько хороших ответов, но для полноты я бы добавил еще один вариант, который ранее не предлагался.
Чтобы проверить, является ли что-то массивом, вы можете использовать
util
собственный модуль Node.js и егоisArray()
функцию.Пример:
var util = require('util'); util.isArray([]); // true util.isArray(new Array); // true util.isArray({"0":"string","1":"string","length":"2"}); // false
Используя этот метод, вам не нужно беспокоиться о стандартах JS, реализованных в V8, поскольку он всегда покажет правильный ответ.
источник
util.isArray()
настоящее время прокси наArray.isArray()
: github.com/joyent/node/blob/…Попробуйте так:
console.log (Object.prototype.toString.call (arg) .replace (/ ^ [object (. +)] $ /, '$ 1'). ToLowerCase ())
источник