Как в javascript определить, является ли объект хешем или массивом?
Результатом моего вызова JSON может быть 9X_javascript-execution либо массив, либо хэш. Как отличить эти 9X_vanilla-javascript два?
Ответ #1
Ответ на вопрос: Как в javascript определить, является ли объект хешем или массивом?
Современные браузеры поддерживают метод Array.isArray(obj)
.
See MDN для документации и полифилла.
= оригинальный ответ 2008 года =
вы можете 9X_javascript использовать свойство constuctor вашего 9X_vanilla-js вывода:
if(output.constructor == Array){
}
else if(output.constructor == Object){
}
- Любой, кто использует [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
}
- Хороший ответ. Вы можете добавить каждый объект js, который можно рассматривать как хеш.<p ...
Ответ #3
Ответ на вопрос: Как в javascript определить, является ли объект хешем или массивом?
Вы имели в виду «Объект» вместо «Хеш»?
>>> var a = [];
>>> var o = {};
>>> a instanceof Array
true
>>> o instanceof Array
false
9X_javascript-dom
Ответ #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);
- `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]);
-
13
-
6
-
6
-
12
-
38
-
9
-
5
-
18
-
5
-
5
-
6
-
8
-
5
-
7
-
41
-
10
-
10
-
27
-
9
-
20
-
15
-
12
-
41
-
8
-
9
-
12
-
43
-
4
-
7
-
24
-
3
-
20
-
9
-
23
-
11
-
10
-
7
-
4
-
5
-
25
-
6
-
11
-
10
-
86
-
4
-
4
-
25
-
20
-
13
-
8