检查字典对象的长度

Pos*_*Guy 178 javascript

我正试图检查这里的长度.试过数.有什么我想念的吗?

var dNames = {}; 
dNames = GetAllNames();

for (var i = 0, l = dName.length; i < l; i++) 
{
        alert("Name: " + dName[i].name);
}
Run Code Online (Sandbox Code Playgroud)

dNames包含名称/值对.我知道dNames在该对象中有值,但它仍然完全跳过那个,当我提醒甚至dName.length显然不是如何做到这一点......所以不确定.在网上查找.找不到任何关于此的内容.

Gre*_*nby 421

我所做的是使用Object.keys()返回所有键的列表,然后获取其长度

Object.keys(dictionary).length
Run Code Online (Sandbox Code Playgroud)

  • 仅供参考的其他人仍然支持IE8:没有骰子.[链接](http://kangax.github.io/es5-compat-table/#Object.keys) (12认同)
  • 正是我需要的!干杯 (3认同)
  • 最常用的解决方案,可能是最坏的解决方案,您必须遍历整个字典来获取长度,所以它是O(n)而不是应该的O(1),呃 (2认同)
  • 现在,JavaScript具有Map对象,可能最好使用它并使用new Map()。size (2认同)

sbe*_*rry 8

var c = {'a':'A', 'b':'B', 'c':'C'};
var count = 0;
for (var i in c) {
   if (c.hasOwnProperty(i)) count++;
}

alert(count);
Run Code Online (Sandbox Code Playgroud)

  • 我不认为**有.确保检查"hasOwnProperty"以停止迭代原型链并仅检查属性. (2认同)