Как в 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