是否有任何内置函数可以返回对象的长度?
例如,我有a = {'a':1,'b':2,'c':3},它应该返回3。如果我使用。length,它返回undefined。
它可以是一个简单的循环函数,但我想知道是否有内置函数?
还有一个相关的问题(JSON对象的长度)——在选择的答案中,用户建议将对象转换为数组,这对我的任务来说不是很舒服。
是否有任何内置函数可以返回对象的长度?
例如,我有a = {'a':1,'b':2,'c':3},它应该返回3。如果我使用。length,它返回undefined。
它可以是一个简单的循环函数,但我想知道是否有内置函数?
还有一个相关的问题(JSON对象的长度)——在选择的答案中,用户建议将对象转换为数组,这对我的任务来说不是很舒服。
当前回答
您可以添加另一个名称:length值对,并适当地递增/递减它。这样,当需要查询长度时,就不必每次都遍历整个对象属性,也不必依赖于特定的浏览器或库。当然,这完全取决于你的目标。
其他回答
您可以添加另一个名称:length值对,并适当地递增/递减它。这样,当需要查询长度时,就不必每次都遍历整个对象属性,也不必依赖于特定的浏览器或库。当然,这完全取决于你的目标。
你看过underscore.js (http://underscorejs.org/docs/underscore.html)吗?它是一个实用程序库,有很多有用的方法。有一个集合大小方法,以及一个toArray方法,这可能会为您提供您所需要的。
_.size({one : 1, two : 2, three : 3});
=> 3
这应该做到:
Object.keys(a).length
然而,对象。在IE8及以下版本、Opera和FF 3.6及以下版本不支持。
现场演示:http://jsfiddle.net/simevidas/nN84h/
还有一个答案:
var j = '[{“uid”:“1”,“名字”:“宾果男孩”、“profile_img”:“funtimes.jpg”},{“uid”:“2”,“名字”:“约翰尼苹果”,“profile_img”:“badtime.jpg”}]”; obj = Object.keys(j).length; console.log (obj)
下面是一个jquery化的函数,可以使用了。
$.extend({
keyCount : function(o) {
if(typeof o == "object") {
var i, count = 0;
for(i in o) {
if(o.hasOwnProperty(i)) {
count++;
}
}
return count;
} else {
return false;
}
}
});
可以这样调用:
var cnt = $.keyCount({"foo" : "bar"}); //cnt = 1;