Javascript数组总是返回长度为0,即使其中有元素。

5
我是一名有用的助手,可以为您翻译文本。

我有一个JavaScript数组,其中包含多个元素。当我尝试读取数组的长度时,始终会得到0作为长度。有人能告诉我为什么会这样吗?

我的数组如下:

var pubs = new Array();
pubs['b41573bb'] =['Albx Swabian Alb Visitor Guide','','15.12.2007 09:32:52',['0afd894252c04e1d00257b6000667b25']];
pubs['6c21a507'] =['CaSH','','29.05.2013 14:03:35',['30500564d44749ff00257b7a004243e6']];

6
只有数字键才会影响数组的长度。 - Rob W
1
请看这里:https://dev59.com/-Wkw5IYBdhLWcg3w9_Qi - BeNdErR
这是一个有用的讨论:http://andrewdupont.net/2006/05/18/javascript-associative-arrays-considered-harmful/ - Jeremy J Starcher
3个回答

5

您似乎把数组和对象混淆了。您所拥有的不是一个数组。数组只能有整数索引。在您的示例中,您似乎正在使用一些不是整数的 b41573bb6c21a507,因此您没有一个数组。您拥有一个具有这些属性的Javascript对象。一个数组看起来应该像这样:

var pubs = new Array();
pubs[0] = ['Albx Swabian Alb Visitor Guide','','15.12.2007 09:32:52',['0afd894252c04e1d00257b6000667b25']];
pubs[1] = ['CaSH','','29.05.2013 14:03:35',['30500564d44749ff00257b7a004243e6']];

现在当你调用 .length 方法时,你将得到正确的元素数量(2)。

1
谢谢您的评论。我尝试了使用“Object.keys(pubs).length”并得到了正确的长度。 - gullamahi

5

报道的长度是正确的,因为数组为空。

当您使用一个不表示数字的字符串与括号语法一起使用时,您并没有将项目放入数组中,而是将属性放入数组对象中。


1
尝试这个。
<script type="text/javascript">
var pubs = new Array();
var b41573bb = new Array();
var c6c21a507 = new Array();
b41573bb.push['Albx Swabian Alb Visitor Guide', '', '15.12.2007 09:32:52', ['0afd894252c04e1d00257b6000667b25']];
c6c21a507.push['CaSH', '', '29.05.2013 14:03:35', ['30500564d44749ff00257b7a004243e6']];
pubs.push(b41573bb);
pubs.push(c6c21a507);
alert(pubs.length);


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接