私はJSONオブジェクトを持っています(これは私が定義したものです)、その中の配列の値にアクセスしようとしています。私が何を誤解している正しいが、img.iName
の値は常にundefined
Javascript:連想配列のルーピングを理解していません
である3回ループしていますか?
<div id="dbgDIV">Debug Div<br></div>
<script>
// imgs as a JSON array
var gallery = {"imgs":
[ // Height and Width to be added
{"iName":"File1.jpg", "tName": "File1_th.jpg","cap":"This is a Caption for File1"},
{"iName":"File2.jpg", "tName": "File2_th.jpg","cap":"This is a Caption for File2"},
{"iName":"File3.jpg", "tName": "File3_th.jpg","cap":"This is a Caption for File3"}
],
"imgCount":"3"
};
var dbgDIV = document.getElementById("dbgDIV");
for (var img in gallery.imgs) {
dbgDIV.innerHTML = dbgDIV.innerHTML + "img=" + img.iName + "<br>";
console.log(img.iName);
}
</script>
使用 'in'」:私はあなたのようなもので行くことをお勧めしたい
(ジャバスクリプト内のすべての変数はオブジェクトです)。この配列の場合は、通常のforループを使用してください –
すべてのブラウザに組み込まれているJavaScriptデバッガの使い方を学ぶことは非常に役立ちます。あなたのループを一歩進めれば、ループ内の 'img'が期待通りに配列要素への参照ではなく、代わりに_array index_、つまり' 0'、 '1'、または' 2 '。開発者用ツールとJavaScriptデバッガの使い方を学ぶには時間をかけてください。あなたはそれがあなたの価値があると分かります。以下は[Chrome DevToolsのガイド](https://developer.chrome.com/devtools)です。 –
JavaScriptとJSONには「連想配列」がありません。彼らには_オブジェクトがあり、_アレイ_があります。 'gallery.imgs'は配列であり、さまざまな答えが指摘されているので、配列に対して' for'..in'ループを使うべきではありません。しかし、 'for'..'''の使用は実際の問題ではありませんでした!配列に対して 'for'..in''を使わない本当の理由は、' Array.prototype'が拡張されていれば、それらの余分なプロパティがあなたのループに現れます。上記の私のコメントは、問題の実際の理由を説明しています。 –