0

私はこのコードのビットに頭を悩ませています:

{
  "Carrefour": [
    { "geography": [ "Europe", "Germany" ], "productLine": "Produce", "revenue": { "2022": 130143, "2021": 172122, "2020": 103716 } },
    { "geography": [ "Europe", "France" ], "productLine": "Clothing", "revenue": { "2022": 85693, "2021": 91790, "2020": 77650 } },
    ],
  "Tesco": [
    { "geography": [ "Europe", "United Kingdom" ], "productLine": "Electronics", "revenue": { "2022": 239537, "2021": 131959, "2020": 97047 } },
    { "geography": [ "Europe", "Ireland" ], "productLine": "Produce", "revenue": { "2022": 74963, "2021": 43406, "2020": 54623 } },
    ]
}

このコードをループして、すべてのコンテンツにアクセスしようとしています。

しかし、私はこの地域(ヨーロッパ)に行く方法がわかりません。私は試した

function (json) {
    for (var company in json) {
        region = json[company].geography[0];
    }
}

ただし、companyは配列であるため、undefinedを返します。Infactjson.Carrefour[0].geography[0];は正しく「ヨーロッパ」を返します。

配列として会社にアクセスし、名前を保持するにはどうすればよいですか?名前を直接使うことはできません!

ありがとうございました。

4

1 に答える 1

1

会社には配列が割り当てられているため、内部ループが必要です。

for (var company in json) {
    for (var i = 0; i < json[company].length; i++) {
        region = json[company][i].geography[0];
    }
}

これがデモです:http://jsfiddle.net/dkPWt/

デモ出力:

Carrefour: 
    Europe
    Europe
Tesco: 
    Europe
    Europe
于 2012-10-04T20:53:18.707 に答える