Javascript 正在尝试获取数组长度

Javascript 正在尝试获取数组长度,javascript,arrays,Javascript,Arrays,请参见下面给定的场景 var x = []; x['abc'] = "hello"; console.log(x.length); //returns 0 var x = [1,2]; x['abc'] = "hello"; console.log(x.length); //returns 2 这背后有什么原因,或者我遗漏了什么吗?没有索引,您无法访问数组。如果要在数组中插入特定数据,可以如下所示: var x = []; x[0] = "hello"; alert(x.l

请参见下面给定的场景

var x = [];
x['abc'] = "hello";
console.log(x.length); //returns 0

var x = [1,2];
x['abc'] = "hello";
console.log(x.length); //returns 2

这背后有什么原因,或者我遗漏了什么吗?

没有索引,您无法访问数组。如果要在数组中插入特定数据,可以如下所示:

 var x = [];
    x[0] = "hello";
    alert(x.length) //will return 1

您所做的是将数组转换为关联数组,其中索引是对指定值的引用。这类似于Javascript中的对象概念

长度为0,因为实际数组从索引0开始。所以如果你检查你的数组

console.log(x[0])//未定义

因此,通过写入,长度为0。

var x = [ ];
您正在定义一个标准数组,其中索引只能是
整数

x['abc'] = "hello";
当您执行
x[“abc”]
时,由于
abc
(用作索引)不是整数,您基本上是在为
arr
对象(javascript中的所有内容都是对象)定义一个属性,而不是在标准数组中添加元素。因此,数组保持原样

var x=[];
x[“abc”]=“你好”;
控制台日志(x)根据

length属性的值在数字上大于名称 名称为数组索引的每个自己的属性;每当 创建或更改数组对象的own属性,其他 属性会根据需要进行调整以保持此不变

进一步

特别是,每当添加名称为数组的自有属性时 索引时,将更改长度属性的值

因此,当创建名称为数组索引的属性时,长度属性将被调整,只有当长度属性发生变化时才会改变


'abc'
在添加到数组中时是非数字的(因此不是数组的索引),不会反映
长度
属性的任何更改。

您不能像在Python或Php等中那样,在JavaScript中附加不是数字的用户定义键。在JavaScript中,数组的键只能是数字

这样做:

var x=[];
x['abc']=“你好”;

控制台日志(x.length)
非数字属性不会根据您的结果增加数组的长度,它可以正常工作。数组总是从零开始,而不是从一开始。在第二个场景中,您是按键添加的,追加时数组模式必须匹配。您的答案可能是: