の宣言により m = { "1": ["2", "3"], "6", ["4", "5"] };
、構文エラーが発生します。私はあなたが意味すると思いますm = { "1": ["2", "3"], "6": ["4", "5"] };
。
p.length
は 2 なので、ループは 2 回繰り返されます。式の最初の反復値は次のとおりです。
i = 0
p[i] = "1"
m[p[i]] = m["1"] = ["2", "3"]
2 番目のループで:
i = 1
p[i] = "2"
m[p[i]] = m["2"] (undefined)
あなたには と しかm["1"]
ありm["6"]
ませんm["2"]
。そのためarray
、最後の反復では未定義です。したがって、ループ後も未定義のままです。
m
次のように宣言を修正できます。
m = { "1": ["2", "3"], "2": ["4", "5"] };
これarray = ["4", "5"]
で、ループの後になります。
整数を文字列に格納しないことをお勧めします。2
の代わりに使用し"2"
ます。そうしないと、将来エラーが発生する可能性があります。たとえば、2 + 2 = 4
と"2" + "2" = "22"
. "2"
他のコードから取得した場合は、 を使用しparseInt
て通常の数値に変換します。
p
また、キーのリストで変数を作成する必要はありません。for..in
loop を使用して、オブジェクトのキーを反復処理できます。
m = { 1: [2, 3], 2: [4, 5] };
for(i in m) {
var array = m[i];
//do stuff
}
for..in
キーの順序を保持することを保証するものではないことに注意してください。for..in
ただし、 doの既存の実装はすべて順序を保持します。