我正在尝试在jQuery中设置一个数组,然后需要对其进行for循环。但是似乎由于某种原因我不能使用关联数组?
var items = new Array();
items['foo'] = 123456;
items['bar'] = 789012;
items['baz'] = 345678;
items['bat'] = 901234;
alert(items.length);
这只是一个测试,但它返回0?
我正在尝试在jQuery中设置一个数组,然后需要对其进行for循环。但是似乎由于某种原因我不能使用关联数组?
var items = new Array();
items['foo'] = 123456;
items['bar'] = 789012;
items['baz'] = 345678;
items['bat'] = 901234;
alert(items.length);
这只是一个测试,但它返回0?
例如:
var items = {
foo : 123456,
bar : 789012,
baz : 345678,
bat : 901234
}
var getObjectSize = function(obj) {
var len = 0, key;
for (key in obj) {
if (obj.hasOwnProperty(key)) len++;
}
return len;
};
使用:getObjectSize(items); // 输出:4
更多信息请参见此处。
另一个示例:
Object.keys(items).length;
var items = new Array();
items['foo'] = 123456;
foo
的数组中,但实际上你正在将一个带有键foo
和值123456
的属性添加到items
变量中。如果你输入items.foo
,它会返回你的123456
。var items = {
foo: 123456,
bar: 789012,
baz: 345678,
bat: 901234
};
另一种方法可能是设置两个不同的数组,你可以同时构建这两个数组:
var items = [], items2 = [];
items.push('foo');
items2.push(123456);
// etc.
alert(items2.length);
这种方法的效率取决于你如何使用它。如果你只需要循环遍历项目列表并对每个项目执行某些操作,那么这种方法可能更有效。但是,如果你需要像使用关联数组一样使用它(items['foo']
),那么最好建立一个对象。
items = items2 = []
这行代码将 items
和 items2
指向同一个数组,导致长度加倍,因为它同时包含了键和值。 - cHao.length 属性返回数组的最高数字索引。因此,在您的情况下,没有数字索引,它返回 0。请尝试
items[98] = "something";
items.length 将会是 98..!使用 .length 属性时要小心,如果你还想计算非数字索引,请循环遍历对象(数组也是一个对象)并计算它的 ownProperties。