javascript 对象中的元素数
2022-08-30 04:22:23
有没有办法(从某个地方)获取Javascript对象中的元素数量?(即常数时间复杂度)。
我找不到检索该信息的属性或方法。到目前为止,我只能考虑对整个集合进行迭代,但这是线性时间。
奇怪的是,没有直接访问物体的大小,你不觉得吗。
编辑:
我说的是对象(不是一般的对象):Object
var obj = new Object ;
有没有办法(从某个地方)获取Javascript对象中的元素数量?(即常数时间复杂度)。
我找不到检索该信息的属性或方法。到目前为止,我只能考虑对整个集合进行迭代,但这是线性时间。
奇怪的是,没有直接访问物体的大小,你不觉得吗。
编辑:
我说的是对象(不是一般的对象):Object
var obj = new Object ;
尽管 JS 实现可能会在内部跟踪这样的值,但没有标准的方法来获取它。
过去,Mozilla的Javascript变体暴露了非标准__count__
,但它已经在1.8.5版本中被删除了。
对于跨浏览器脚本,您只能显式迭代属性并检查:hasOwnProperty()
function countProperties(obj) {
var count = 0;
for(var prop in obj) {
if(obj.hasOwnProperty(prop))
++count;
}
return count;
}
在支持 ECMAScript 5 的实现中,也可以写成 (Kudos to Avi Flax)
function countProperties(obj) {
return Object.keys(obj).length;
}
请记住,您还会错过不可枚举的属性(例如数组的)。length
如果您使用的是jQuery,Prototype,Mootools$whatever最新炒作之类的框架,请检查它们是否带有自己的集合API,这可能比使用本机JS对象更好地解决您的问题。