Javascript 无法获取正确的数组长度

Javascript 无法获取正确的数组长度,javascript,Javascript,下面的代码返回数组的长度 var test=[]; test["abc"]=1; test["abcd"]=11; console.log(test.length); 我期望它能输出2 但它显示0 欢迎您的评论您实际上并没有向数组添加任何元素,这是在数组对象上创建属性 通过键入以下内容,您可以看出我说的是实话: console.log(test.abc); console.log(test.abcd); 如果使用push()添加元素,或者使用如下数字索引设置元素,则长度可能会增加: test

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

var test=[];
test["abc"]=1;
test["abcd"]=11;
console.log(test.length);
我期望它能输出2 但它显示0


欢迎您的评论

您实际上并没有向数组添加任何元素,这是在数组对象上创建属性

通过键入以下内容,您可以看出我说的是实话:

console.log(test.abc);
console.log(test.abcd);
如果使用
push()
添加元素,或者使用如下数字索引设置元素,则
长度可能会增加:

test[0] = 1;
test[1] = 2;

实际上,您并没有向数组中添加任何元素,而是在数组对象上创建属性

通过键入以下内容,您可以看出我说的是实话:

console.log(test.abc);
console.log(test.abcd);
如果使用
push()
添加元素,或者使用如下数字索引设置元素,则
长度可能会增加:

test[0] = 1;
test[1] = 2;

您应该使用以下方法计算键数:

理想情况下,不要使用数组,而是使用普通JavaScript对象(也称为哈希):


您应该使用以下方法计算键数:

理想情况下,不要使用数组,而是使用普通JavaScript对象(也称为哈希):


如果要向数组中添加项,请使用

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

否则,如果要将项目添加到数组中,您将向数组添加属性

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

否则,您将向数组添加属性

您的问题是由于对Javascript中的组成和数组的误解

在Javascript中,
数组
被指定为特定类型的对象,仅由数字键组成

.length
是数组对象的一个特殊属性,它与数组中最大数字键的值相关联

通过使用诸如
“abc”
之类的键,实际上您只是在对象上设置任意属性;
length
属性将完全不受此影响

您有两个选择:

  • 对数组使用数字键

  • 如果需要使用命名键,则必须接受
    length
    属性和其他特定于阵列的功能不可用。因此,您也可以使用常规对象而不是数组

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


  • 您的问题是由于对Javascript中的组成和数组的误解造成的

    在Javascript中,
    数组
    被指定为特定类型的对象,仅由数字键组成

    .length
    是数组对象的一个特殊属性,它与数组中最大数字键的值相关联

    通过使用诸如
    “abc”
    之类的键,实际上您只是在对象上设置任意属性;
    length
    属性将完全不受此影响

    您有两个选择:

  • 对数组使用数字键

  • 如果需要使用命名键,则必须接受
    length
    属性和其他特定于阵列的功能不可用。因此,您也可以使用常规对象而不是数组

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


  • 您正在添加答案中解释的属性,但为什么不使用JavaScript对象var test={},并向其添加属性?您正在添加答案中解释的属性,但为什么不使用JavaScript对象var test={},并向其添加属性?