我试着检查一下长度。尝试计数。我遗漏了什么吗?
var dNames = {};
dNames = GetAllNames();
for (var i = 0, l = dName.length; i < l; i++)
{
alert("Name: " + dName[i].name);
}
dNames保存名称/值对。我知道dName在那个对象中有值但它仍然完全跳过了那个当我警告dName时。长度显然不是这样的…所以不确定。在网上查的。在这上面什么都找不到。
我试着检查一下长度。尝试计数。我遗漏了什么吗?
var dNames = {};
dNames = GetAllNames();
for (var i = 0, l = dName.length; i < l; i++)
{
alert("Name: " + dName[i].name);
}
dNames保存名称/值对。我知道dName在那个对象中有值但它仍然完全跳过了那个当我警告dName时。长度显然不是这样的…所以不确定。在网上查的。在这上面什么都找不到。
当前回答
我所做的是使用Object.keys()返回所有键的列表,然后获取它的长度
Object.keys(dictionary).length
其他回答
我所做的是使用Object.keys()返回所有键的列表,然后获取它的长度
Object.keys(dictionary).length
var c = {'a':'A', 'b':'B', 'c':'C'};
var count = 0;
for (var i in c) {
if (c.hasOwnProperty(i)) count++;
}
alert(count);
计数和显示字典中的键(在控制台运行):
o=[];count=0; for (i in topicNames) { ++count; o.push(count+": "+ i) } o.join("\n")
样例输出:
"1: Phase-out Left-hand
2: Define All Top Level Taxonomies But Processes
3: 987
4: 16:00
5: Identify suppliers"
简单计数函数:
function size_dict(d){c=0; for (i in d) ++c; return c}
这个问题令人困惑。常规对象{}没有length属性,除非你打算创建自己的函数构造函数来生成具有length属性的自定义对象(在这种情况下你没有指定)。
意思是,你必须通过对象上的for..in语句获得“长度”,因为长度没有设置,并增加一个计数器。
我不明白你为什么需要长度。您是手动在对象上设置0,还是依赖于自定义字符串键?Eg obj['foo'] = 'bar';如果是后者,那为什么还需要篇幅呢?
编辑#1:为什么你不能这样做?
list = [ {name:'john'}, {name:'bob'} ];
然后遍历列表?长度已经设置好了。