Multidim json array javascript,如何抓取值

Multidim json array javascript, how to grab values

本文关键字:抓取 何抓取 json array javascript Multidim      更新时间:2023-09-26

我有来自 AJAX 调用的数据响应:

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

它通过statsarray = data;存储到变量中

现在如何遍历统计数组并输出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; }
);

只需执行以下操作:

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

(两种变体都是可能的)

变体是:

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

像这样:

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

你可以尝试这样的事情:

更新:更好的例子

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; - 紧接在这一行之后,以确保您确实有一些值要迭代。