JavaScriptのオブジェクトを繰り返します
-
28-10-2019 - |
質問
私はフォームのobejctを持っています:
var test = {"2011":{"10":4,"9":9,"8":15,"7":11,"6":11,"5":13,"4":9,"3":5,"2":9,"1":4,"0":20},"2010":{"11":9,"10":23,"9":58}}
毎年と月のコンボを打つことができるように、これを反復したいと思います。私は持っている:
var years = d3.keys(test),
months = d3.range(12),
data = [];
だから、JavaScriptの初心者として、正気をチェックするために私が検査すること years
.
document.writeln(years)
2011,2010
かっこいいですが、私が反復しようとするとき years
データを引き出すための配列 test
私がすることをする要素は、テストするのが正しいと思いますが、要素は失われます:
for(var y in years) {
document.writeln(y);
}
0,1
どうすれば反復しますか years
実際の要素を取得するには(2011,2010
)それらに?
解決
for in
インデックス/キーを取得します(値ではありません)。
そうするように、ループを変更する必要があります:
for(var y in years) {
document.writeln(years[y]);
}
編集 -MissingNoのコメントに従って、使用を使用して配列を繰り返します for in
aです 悪いアイデア.
for(var i = 0, l = years.length; i < l; i++) {
document.writeln(years[i]);
}
少し余分な情報...オブジェクトに対して/inループを使用すると、プロパティキーを繰り返します。例えば、
for(var y in test) {
//This will yield, "2011" and then "2010"
document.writeln(y);
}
他のヒント
私の知る限り、 var y in years
あなたに与えます キー 配列に years
. years[y]
実際の価値を与える必要があります。
Yは、0と1の年で要素にアクセスするインデックスになります(年は配列であるため)。したがって、年の値にアクセスするには、使用してみてください
writeln(years[y])
それ以外の
writeln(y)
(私見、JavaScriptはこのように作業することで少し直感的です)
JavaScriptで for in
ループはあなたが彼らがしていると思うことをしません。彼らはあなたに要素ではなく鍵を与えます
あなたが欲しい
for(var y in years) {
document.writeln(years[y]);
}
0,1を取り戻しているので、年は実際の配列のように見えますので、単に実行することもできます
for(var i = 0; i < years.length; i++) {
document.writeln(years[i]);
}
また、あなたはすでにあなたのタイトルを編集しましたが、用語に関するメモです。文字列の場合、JSONです。それがオブジェクトである場合、まあ、それはオブジェクトです。 「JSONオブジェクト」や「JSONアレイ」などのものはありません