无法获得正确的数组长度

时间:2013-11-25 10:34:53

标签: javascript

下面的代码返回数组的长度

var test=[];
test["abc"]=1;
test["abcd"]=11;
console.log(test.length);

我预计它输出2 但它显示0

您的评论欢迎

4 个答案:

答案 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属性将完全不受此影响。

您有两种选择:

  1. 使用数组的数字键。

  2. 如果需要使用命名密钥,则必须接受length属性和其他特定于阵列的功能不可用。所以你也可以使用常规对象而不是数组。

    仍然可以计算对象中的元素,但这并不像使用length属性那么简单。

答案 3 :(得分:0)

如果要将项目添加到数组,请使用

 array[0] = 1;
 array[1] = 11;

否则您要向数组添加属性