Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/415.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 为什么不是';t数组的大小为7?_Javascript - Fatal编程技术网

Javascript 为什么不是';t数组的大小为7?

Javascript 为什么不是';t数组的大小为7?,javascript,Javascript,我有点困惑,为什么当史密斯被添加到列表中时,数组或对象的大小不被计算 var a = []; a[0] = 12; a[5] = "Lou"; a["Sue"] = "Smith"; console.log("a: ", a); console.log("length: ", a.length); Array.length属性只获取最后一个数字标识符并向其中添加一个 (如果数组是由数组构造函数构成的,则将长度分配给它,并将其传递给构造函数) 这里最后一个数字标识符是5,因此length将返回5

我有点困惑,为什么当史密斯被添加到列表中时,数组或对象的大小不被计算

var a = [];
a[0] = 12;
a[5] = "Lou";
a["Sue"] = "Smith";
console.log("a: ", a);
console.log("length: ", a.length);

Array.length
属性只获取最后一个数字标识符并向其中添加一个

(如果数组是由
数组
构造函数构成的,则将
长度
分配给它,并将其传递给构造函数)

这里最后一个数字标识符是
5
,因此length将返回
5+1
,等于6

在JavaScript数组上设置属性时,当属性为 有效数组索引,且该索引超出 数组,引擎将相应地更新数组的长度属性


Array.length
属性只获取最后一个数字标识符并向其中添加一个

(如果数组是由
数组
构造函数构成的,则将
长度
分配给它,并将其传递给构造函数)

这里最后一个数字标识符是
5
,因此length将返回
5+1
,等于6

在JavaScript数组上设置属性时,当属性为 有效数组索引,且该索引超出 数组,引擎将相应地更新数组的长度属性


因为结果数组看起来像

[12, undefined, undefined, undefined, undefined, "Lou"]
我可以说得更多,它会有一个属性
Sue

a.Sue // -> "Smith"
Object.keys(a) // -> ["0", "5", "Sue"]

您可以使用。

获得更多详细信息,因为结果数组如下所示

[12, undefined, undefined, undefined, undefined, "Lou"]
我可以说得更多,它会有一个属性
Sue

a.Sue // -> "Smith"
Object.keys(a) // -> ["0", "5", "Sue"]

您可以使用获得更多详细信息。

它是6,0=12,1-4=未定义,5=Lou。索引为“Sue”的数组中没有元素。数组包含使用数字属性索引的项。当您使用
[“Sue”]
时,它只是将一个常规属性添加到对象中,而该对象不算作数组的一部分。嘿,为什么要进行向下投票。。这是一个很好的问题,应该被理解。它是6,0=12,1-4=未定义,5=Lou。索引为“Sue”的数组中没有元素。数组包含使用数字属性索引的项。当您使用
[“Sue”]
时,它只是将一个常规属性添加到对象中,而该对象不算作数组的一部分。嘿,为什么要进行向下投票。。这是一个很好的问题,应该受到赞赏是的,OP就是这么问的。。虽然
array
仍然是一个
对象,并且它现在包含一个
properta.Sue
为什么不将长度计算为6请注意,索引1到4处没有成员,但它们不存在。等效的数组文本是
[12,,,,,,“Lou”]
。是的,这是OP要求的。。虽然
array
仍然是一个
对象,并且它现在包含一个
properta.Sue
为什么不将长度计算为6请注意,索引1到4处没有成员,但它们不存在。等效的数组文字是
[12,,,,,“Lou”]
。您是说空数组的“最后一个数字标识符”是
-1
?:-)“如果为空,则始终为0”。不是这样。长度始终至少为最大索引+1。例如,
var a=新数组(10)。a、 长度为10,但没有成员(数组为“空”)。@RobG no。数组不是空的。它是
[undefinedx10]
,有十个
未定义的
它是空的,没有成员,没有。例如,
a.hasOwnProperty('1')
返回false。试图访问
a[1]
时返回未定义,因为这是试图访问任何对象的不存在属性时得到的结果。@RobG arrayLength如果传递给数组构造函数的唯一参数是一个介于0和232-1(包括0和232-1)之间的整数,则返回一个长度设置为该数字的新JavaScript数组。如果参数是任何其他数字,则会引发RangeError异常。您是说空数组的“最后一个数字标识符”是
-1
?:-)“如果为空,则始终为0”。不是这样。长度始终至少为最大索引+1。例如,
var a=新数组(10)。a、 长度为10,但没有成员(数组为“空”)。@RobG no。数组不是空的。它是
[undefinedx10]
,有十个
未定义的
它是空的,没有成员,没有。例如,
a.hasOwnProperty('1')
返回false。试图访问
a[1]
时返回未定义,因为这是试图访问任何对象的不存在属性时得到的结果。@RobG arrayLength如果传递给数组构造函数的唯一参数是一个介于0和232-1(包括0和232-1)之间的整数,则返回一个长度设置为该数字的新JavaScript数组。如果参数是任何其他数字,则会引发RangeError异常。