Javascript数组长度未更改

Javascript数组长度未更改,javascript,arrays,Javascript,Arrays,我有一个对象数组,它的长度似乎没有更新。关于Javascript数组,我不知道什么 长度报告为0,它将数组显示为空,但console.log将其显示为具有数组索引 我对这些阵列有什么不了解 谢谢你抽出时间!:+D this.Hats[ "Red" ] = new Hat( oPar, "red" ) this.Hats[ "Yellow" ] = new Hat( oPar, "yellow" ); 这就是你的问题所在。您不是将数组用作数组,而是将其用作对象,设置Hats.Red和H

我有一个对象数组,它的长度似乎没有更新。关于Javascript数组,我不知道什么

长度报告为0,它将数组显示为空,但console.log将其显示为具有数组索引

我对这些阵列有什么不了解

谢谢你抽出时间!:+D

  this.Hats[ "Red" ] = new Hat( oPar, "red" )
  this.Hats[ "Yellow" ] = new Hat( oPar, "yellow" );
这就是你的问题所在。您不是将数组用作数组,而是将其用作对象,设置Hats.Red和Hats.Yellow属性,而不是填充数组索引

试试这个:

  this.Hats.push( new Hat( oPar, "red" ) );
  this.Hats.push( new Hat( oPar, "yellow" ) );

您正在使用关联数组。这种类型的数组允许您为每个数组成员定义一个键。以这种方式使用数组意味着没有可以遍历成员的索引值,而是可以使用
for(var i in object)


谢谢,但是没有办法使用字符串作为数组索引吗?您可以通过为项分配字符串索引来将数组用作字典。它不会影响数组的length属性,但可以使用以下方法之一获取所有字典键的长度。如果要这样做,甚至不应该使用数组([])。。。只需使用一个对象({})。JavaScript对象是字典。您不能使用它们获得数组方法,但可以获得字符串键。这听起来像你想要的。哈哈,原来我真正的问题是完全无关的。谢谢大家:)原来我的索引在一些实例中包含了一个换行符,所以当尝试获取不带换行符的键时,它将与该数组索引不匹配。然而,我最终还是使用了来自此网站的信息(不管是什么:)
for (var key in test.People["Fred"].Hats) {
    console.log(key);
}