長さが更新されていないオブジェクトの配列があります。 Javascript配列について何を知らないのですか?JavaScript配列の長さが変更されない
http://stackoverflow.pastebin.com/aqZtRkkf
長さを0として報告され、それが空として配列を示しているが、にconsole.logは、配列インデックスを有するものとしてそれを示しています!
これらのアレイについて私は何を理解していませんか?
ありがとうございました! :+ D
長さが更新されていないオブジェクトの配列があります。 Javascript配列について何を知らないのですか?JavaScript配列の長さが変更されない
http://stackoverflow.pastebin.com/aqZtRkkf
長さを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)
を使用できます。
for (var key in test.People["Fred"].Hats) {
console.log(key);
}
ありがとうございますが、配列インデックスとして文字列を使用する方法はありませんか? – dab
配列を辞書として使用するには、項目に文字列インデックスを割り当てます。配列のlengthプロパティには影響しませんが、これらのメソッドのいずれかを使用してすべての辞書キーの長さを取得できます。 http://stackoverflow.com/questions/5223/length-of-javascript-associative-array –
これを行うつもりならば、配列([])を使うべきではありません...オブジェクト({})。 JavaScriptオブジェクトは辞書です。配列メソッドは取得できませんが、文字列キーを取得します。これはあなたが望むように聞こえる。 – Zach