0

次のようなカスタム Web サービスから返される JSON 応答があります。

var data = { 
    AZ:{charge:123,count:324},
    TN:{charge:123,count:7545},
    TX:{charge:165,count:345}
}

そして、別のjson呼び出しで返される状態の略語の配列を使用してループしたいと思います。このjson呼び出しによって決定される特定の状態だけをすべてループする必要はありません。したがって、次のような州の略語の配列になります。

var states = ["AZ","TX"];

次に、データをループして、電荷プロパティを次のように引き出します。

console.log(data[states[i]].charge);

ただし、これを行うと、データから未定義が返されます。州の略語を取得するとそこにあり、この呼び出しの直前にデータをログアウトすると、すべてのデータがそこにあります。ただし、次のようにして、データ内の各レコードを参照できます

console.log(data["TN"].charge);

誰かが理由を説明console.log(data[states[i]].charge);したいのですが、他の人はそうしますか? また、この問題を修正するにはどうすればよいですか?

4

4 に答える 4

2

AXandTXをキーとして使用していますdataが、それらは文字列ではなく、変数です。引用符を追加して文字列にします。

var states = ['AX','TX'];

コードで発生する可能性のあるエラーを回避するには、プロパティにアクセスする前に、そうdata[states[i]]でないかどうかを確認してください。undefinedcharge

var stateData = data[states[i]];

if(!stateData) return; //or `continue` if inside a loop to skip

console.log(stateData.charge);
于 2013-04-18T13:26:02.533 に答える
0

その場合i = 0、 undefined になる必要があります。これは、にキーstates[0] === "AX"がないためです。あなたが得るべきなら。"AX"datai = 1165

于 2013-04-18T13:26:43.640 に答える