2012-07-06 99 views
0

我想弄清楚下列对象中有多少属性。显然,我可以看到2,但我需要动态地知道。获取JQuery对象中的属性数量

var test = $.parseJSON('{ "ddSize": "Size", "ddColor": "Color" }'); 

如果我尝试:

var mylen = test.length; 

。长度是不确定的。此对象中的属性数量将改变。有时它是1,有时是2或3,但我无法弄清楚如何测试它。

+1

可能重复/在JavaScript中的对象的属性?](http://stackoverflow.com/questions/126100/how-to-efficiently-count-the-number-of-keys-properties-of-an-object-in-javascrip) – 2012-07-06 21:26:31

+0

'Object.keys(obj).length'看起来像一个优雅的做法,但它似乎有兼容性限制。我将所有主流浏览器(包括IE浏览器)定位到IE7。感谢您的链接,显然有很多方法可以做到这一点。 – rwkiii 2012-07-06 21:34:15

+0

这先前的问题也可能感兴趣的:http://stackoverflow.com/questions/5223/length-of-javascript-object-ie-associative-array – 2012-07-06 21:36:13

回答

2

这是一个JavaScript JSON对象。 length功能不可用。

与纯JavaScript解决方案一:

var data = $.parseJSON('{ "ddSize": "Size", "ddColor": "Color" }'); 
var keys = []; 
for (key in data) { 
    keys.push(key); 
} 
// numberOfKeys should equal to 2 
var numberOfKeys = keys.length; 

第二个解决办法,如果你喜欢的jQuery:

var data = $.parseJSON('{ "ddSize": "Size", "ddColor": "Color" }'); 
var keys = []; 
$.each(data, function(key, value) { 
    keys.push(key) 
}); 
// numberOfKeys should equal to 2 
var numberOfKeys = keys.length; 

的文档jQuery.each function

的【如何有效地计算按键的数量
+0

这种方式也使用我的示例数据返回'1'。我使用了jQuery方法。看起来应该是'2'。 – rwkiii 2012-07-06 21:49:33

+0

请仔细检查您的代码或向我显示您正在使用的确切代码?我也更新了这个例子,尝试复制并粘贴到FireBug或Webkit控制台中。 – activars 2012-07-06 21:55:14

+0

我现在得到正确的结果。我正在用'['和']'封闭我的数据字符串,同时尝试不同的方法。您的第二个示例按预期工作。谢谢! – rwkiii 2012-07-06 22:06:36