JavaScript数组长度键值

时间:2010-11-02 11:22:12

标签: javascript arrays

为什么这个非常基本的JavaScript数组在我只有3个键/值对时给出了13的长度。有意义的是,它可能认为13为基于0的索引,而我的最后一个数组的键为12,但我需要任何具有键/值对的数组,它返回正确的对数。密钥必须是数字。

http://jsfiddle.net/fmgc8/1/

编辑:这是我解决它的方式,谢谢。

http://jsfiddle.net/fmgc8/4/

4 个答案:

答案 0 :(得分:6)

这是因为你拥有的最高数字是:

array['12'] = 'twelve';

这会创建一个13的数组长度(因为它基于0)。 JavaScript将扩展数组以分配满足指定插槽所需的位数。 array[0..9]在那里,你只是没有在其中放置任何东西。

答案 1 :(得分:1)

数组的length属性返回对象的最大非负数字键加一。这就是它的定义方式。

如果你想计算键值对,你将不得不自己计算(通过在添加和删除它们时跟踪它们,或者通过迭代它们)。

答案 2 :(得分:1)

或者,像这样重新排列数组:

var array = [];

array.push(['10','ten']);    
array.push(['11','eleven']);    
array.push(['12','twelfe']);        

alert(array.length); 

答案 3 :(得分:1)

array['12']array[12]之间没有区别(数组['12']不被视为关联数组元素)。查找关联数组length