下面的代码返回数组的长度
var test=[];
test["abc"]=1;
test["abcd"]=11;
console.log(test.length);
我预计它输出2 但它显示0
您的评论欢迎
答案 0 :(得分:3)
您实际上并未向数组添加任何元素,这是在数组对象上创建属性。
你可以通过输入以下内容告诉我说实话:
console.log(test.abc);
console.log(test.abcd);
如果您使用length
添加元素或使用数字索引设置它们,push()
可能会增加{/ 1}}。
test[0] = 1;
test[1] = 2;
答案 1 :(得分:3)
您应该使用Object.keys
计算密钥数:
console.log(Object.keys(test).length); // 2
理想情况下,不要使用数组,而应使用普通的JavaScript对象(也称为 hash ):
var test = {};
test.abc = 1;
test.abcd = 11;
答案 2 :(得分:1)
你的问题是由于误解了Javascript中的构成和数组。
在Javascript中,array
被指定为特定类型的对象,仅包含数字键。
.length
是数组对象的特殊属性,它与数组中最大数字键的值相关联。
通过使用诸如"abc"
之类的键,您实际上只是在对象上设置任意属性; length
属性将完全不受此影响。
您有两种选择:
使用数组的数字键。
如果需要使用命名密钥,则必须接受length
属性和其他特定于阵列的功能不可用。所以你也可以使用常规对象而不是数组。
仍然可以计算对象中的元素,但这并不像使用length
属性那么简单。
答案 3 :(得分:0)
如果要将项目添加到数组,请使用
array[0] = 1;
array[1] = 11;
否则您要向数组添加属性