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);
    }
}

请参阅:演示

不幸的是,您必须进行测试.hasOwnProperty以确保它可以与某些库一起使用。

更新:您已在问题中添加了 AJAX 调用中的代码,我注意到您在回调函数之外statsarray声明了变量,但回调中为该变量分配了一些值。请记住,您必须在作为 AJAX 回调的函数运行迭代代码,您可以在其中: - 就在这一行之后,以确保您实际上有一些值要迭代。statsarray = data;

于 2012-08-08T11:37:59.757 回答