0

AJAX 呼び出しからのこのデータ応答があります。

{"18:00":{"twopersons":1,"fourpersons":0}}

これは変数に格納されますstatsarray = data;

statsarray をループしてtwopersons値を出力するにはどうすればよいですか?

だから私は警告することができます:

18:00 - There's 2 x 2persons and 0 x 4persons

Ajax 呼び出しは次のとおりです。

var statsarray;
var currentloopeddate = test_date.toString('yyyy-MM-dd')
$.post("/home/sessions",
    { action: 'partner_calendar_checkseats', date: currentloopeddate },
    function(data) { statsarray = data; }
);
4

3 に答える 3

2

次の手順を実行してください。

var twopersons = data["18:00"].twopersons;
var fourpersons = data["18:00"]["fourpersons"];

(両方のバリエーションが可能です)

バリアントは次のようになります。

var shorter = data["18:00"];
var twopersons = data.twopersons;
// ...
于 2012-08-08T11:20:45.290 に答える
1

何かのようなもの:

var tst = {"18:00":{"twopersons":1,"fourpersons":0}};
for(k in tst) {
  for(var z in tst[k]) {
   console.log(k + ": Theres "+tst[k][z] + " X " + z);
  }
}
于 2012-08-08T11:27:47.340 に答える
0

あなたはこのようなことを試すことができます:

更新:より良い例

var statsarray = {"18:00":{"twopersons":1,"fourpersons":0}};

var hour, persons, line, array;
for (hour in statsarray) {
    if (statsarray.hasOwnProperty(hour)) {
        array = [];
        for (persons in statsarray[hour]) {
            if (statsarray[hour].hasOwnProperty(persons)) {
                array.push(statsarray[hour][persons] + " x " + persons);
            }
        }
        line = hour + " - There's " + array.join(' and ');
        alert(line);
    }
}

参照:DEMO

残念ながら.hasOwnProperty、いくつかのライブラリで動作することを確認するためにテストする必要があります。

更新:質問にAJAX呼び出しのコードを追加しましたが、コールバック関数の外部statsarrayで変数を宣言しているのに、コールバックのその変数に値を割り当てていることに気付きました。AJAXコールバックである関数で反復コードを実行する必要があることに注意してください。ここでは、次のようになります。-この行の直後に、反復する値が実際にあることを確認します。statsarray = data;

于 2012-08-08T11:37:59.757 に答える