natywna funkcja V8. Jest szybki, zawsze jest poprawny. To jest część ES5.
Sprawdza, czy obiekt został utworzony za pomocą konstruktora tablicy.
Metoda z podkreślenia. Oto fragment pobrany z ich źródła
var toString = Object.prototype.toString,
nativeIsArray = Array.isArray;
_.isArray = nativeIsArray || function(obj) {
return toString.call(obj) === '[object Array]';
};
Ta metoda przyjmuje obiekt i wywołuje na nim Object.prototype.toString
metodę. To zawsze będzie zwracane w [object Array]
przypadku tablic.
Z własnego doświadczenia toString
wynika, że najskuteczniejsza jest metoda zadawania pytań, ale nie jest tak krótka ani czytelna, jak instanceof Array
i nie jest tak szybka jak, Array.isArray
ale to jest kod ES5 i staram się unikać używania go do przenoszenia.
Osobiście poleciłbym spróbować użyć underscore
, która jest biblioteką z typowymi metodami narzędziowymi. Posiada wiele przydatnych funkcji, które OSUSZA Twój kod.
util
biblioteki node.js -require('util').isArray(arr)
nodejs.org/api/util.html#util_util_isarray_objectarr instanceof Array
nie działa. JednakArray.isArray()
działa świetnie.Wypróbuj ten kod:
Array.isArray(argument)
źródło
Co powiesz na:
your_object instanceof Array
W V8 w Chrome dostaję
[] instanceof Array > true ({}) instanceof Array > false ({"0":"string","1":"string","length":"2"}) instanceof Array > false
źródło
Wygląda na to, że to pytanie ma kilka dobrych odpowiedzi, ale dla kompletności dodałbym inną opcję, której wcześniej nie sugerowano.
Aby sprawdzić, czy coś jest tablicą, możesz użyć
util
natywnego modułu Node.js i jegoisArray()
funkcji.Przykład:
var util = require('util'); util.isArray([]); // true util.isArray(new Array); // true util.isArray({"0":"string","1":"string","length":"2"}); // false
Dzięki tej metodzie nie musisz się martwić o standardy JS zaimplementowane przez V8, ponieważ zawsze pokaże właściwą odpowiedź.
źródło
util.isArray()
obecnie proxyArray.isArray()
: github.com/joyent/node/blob/…Spróbuj w ten sposób:
console.log (Object.prototype.toString.call (arg) .replace (/ ^ [object (. +)] $ /, '$ 1'). ToLowerCase ())
źródło