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

Результатом моего вызова JSON может быть 9X_javascript-execution либо массив, либо хэш. Как отличить эти 9X_vanilla-javascript два?

85
0
5
Общее количество ответов: 5

Ответ #1

Ответ на вопрос: Как в javascript определить, является ли объект хешем или массивом?

Современные браузеры поддерживают метод Array.isArray(obj).

See MDN для документации и полифилла.

= оригинальный ответ 2008 года =

вы можете 9X_javascript использовать свойство constuctor вашего 9X_vanilla-js вывода:

if(output.constructor == Array){ } else if(output.constructor == Object){ } 

137
5

  • Любой, кто использует [underscore.js] (http://documentcloud.github.io/underscore/), может найти [isArray] (http://documentcloud.github.io ...

Ответ #2

Ответ на вопрос: Как в javascript определить, является ли объект хешем или массивом?

Есть объект:

function isObject ( obj ) { return obj && (typeof obj === "object"); } 

Это массив:

function isArray ( obj ) { return isObject(obj) && (obj instanceof Array); } 

Поскольку массивы 9X_js являются объектами, вам нужно сначала проверить, является 9X_javascript-library ли переменная массивом, а затем - объектом:

if (isArray(myObject)) { // do stuff for arrays } else if (isObject(myObject)) { // do stuff for objects } 

35
1

  • Хороший ответ. Вы можете добавить каждый объект js, который можно рассматривать как хеш.<p ...

Ответ #3

Ответ на вопрос: Как в javascript определить, является ли объект хешем или массивом?

Вы имели в виду «Объект» вместо «Хеш»?

>>> var a = []; >>> var o = {}; >>> a instanceof Array true >>> o instanceof Array false 

9X_javascript-dom

10
0

Ответ #4

Ответ на вопрос: Как в javascript определить, является ли объект хешем или массивом?

Я сделал функцию для определения словаря 9X_vanilla-javascript ли это.

exports.is_dictionary = function (obj) { if(!obj) return false; if(Array.isArray(obj)) return false; if(obj.constructor != Object) return false; return true; }; // return true test.equal(nsa_utils.is_dictionary({}), true); test.equal(nsa_utils.is_dictionary({abc:123, def:456}), true); // returns false test.equal(nsa_utils.is_dictionary([]), false); test.equal(nsa_utils.is_dictionary([123, 456]), false); test.equal(nsa_utils.is_dictionary(null), false); test.equal(nsa_utils.is_dictionary(NaN), false); test.equal(nsa_utils.is_dictionary('hello'), false); test.equal(nsa_utils.is_dictionary(0), false); test.equal(nsa_utils.is_dictionary(123), false); 

6
1

  • `if (Array.isArray (obj)) return false;` <- Разве это не избыточно, учитывая, что массив все равно не ...

Ответ #5

Ответ на вопрос: Как в javascript определить, является ли объект хешем или массивом?

Проверьте свойство "конструктор" объекта. Это 9X_javascript массив - это объект массива.


var a = {
 'b':{length:0},
 'c':[1,2]
}

if (a.c.constructor == Array)
   for (var i = 0; i < a.c.length; i++)
      alert(a.c[i]);
else
   for (var s in a.b);
      alert(a.b[s]);

1
0