迭代json数组 - 如何获取集合的名称/密钥

时间:2015-06-30 20:04:45

标签: javascript jquery json

我从API获取了一个json对象;我得到了(在另一个集合中 - 但这并不重要)像这样的一组密钥:

{ "Id": "64a66e2c-38fa-41dd-9183-8b1bd18a3c87",
    "fields": [
        { "Name": "x1" },
        { "Name": "x2" },
        { "Name": "x3" }

    ],
    "weeks": [ "2015-25", "2015-26", "2015-27" ],
    "series": {
        "M1": [ 6376, 17877, 22592 ],
        "M2": [ 700, 702, 702 ],
        "M3": [ null, 1, 1 ],
        "M4": [ null, 5889, 10275 ]

    } 
}

系列本身(如M1)有值(1 - 1等),我可以阅读和使用, 但我实际上需要系列的名称(比如" M1")。

所以我迭代收集系列和该系列中的每个值没有任何困难,但我如何得到系列本身的名称 - 该名称(不是在这个例子中)非常具有描述性和实用性

$.each(data.series, function (rowIndex, row) {
    var attempt = data.series[rowIndex]; // nope this is [1,1,1,2] or something
    for (var i = 0; i < row.length; i++) {
        var value = row[i]; // yep this is one of the values
    };
});

我如何得到&#34; serie1&#34;进入var attempt

2 个答案:

答案 0 :(得分:1)

在将javascript对象传递给$ .each()迭代器时,您已经将密钥作为第一个参数。

$.each(data.series, function (rowIndex, row) {
    window.alert(rowIndex);
});

答案 1 :(得分:1)

我认为每个人都想说的是jquery.each回调的更具描述性的签名是:

$.each(data.series, function (key, val) {
    var attempt = data.series[key]; // nope this is [1,1,1,2] or something
    for (var i = 0; i < val.length; i++) {
        var value = val[i]; // yep this is one of the values
    };
});

所以要得到你想要的东西,简单的改变为:

$.each(data.series, function (key, val) {
    var attempt = key;
    for (var i = 0; i < val.length; i++) {
        var value = val[i];
    };
});