从json数组中获取第一个值

时间:2013-06-19 17:29:16

标签: jquery json

我有来自数据库的JSON,形状如下:

var data = {
    "zone01": [{
        "region": "North",
        "state": "New York",
        "county": "Albany",
        "code": "01"
    }, {
        "region": "North",
        "state": "New York",
        "county": "Albany",
        "code": "05"
    }, {
        "region": "North",
        "state": "Maine",
        "county": "Auburn",
        "code": "07"
    }],
    "zone02": [{
        "region": "South",
        "state": "Florida",
        "county": "Gainseville",
        "code": "82"
    }, {
        "region": "South",
        "state": "Florida",
        "county": "Macclenny",
        "code": "73"
    }]
};

我正在尝试获取第一组值“zone01”,“zone02”等的列表...以便填充选择输入。通过选择区域,您可以在列表中选择,但我似乎无法获得区域列表。

我试过了:

$.each(data, function(index, element){
    var zone = JSON.stringify(element.index);
    $('#zone').append('<option value="'+zone+'">'+zone+'</option>');
});

但只是未定义。这是jsfiddle

更新的完成代码

以下是我的竞争代码:jsFiddle

5 个答案:

答案 0 :(得分:6)

您只需使用index,而不是element.index

var zone = JSON.stringify(index);

element指的是冒号右侧的值。它没有index属性。

index是指冒号左侧的标识符。这正是你想要的。

答案 1 :(得分:4)

$.each(data, function(k,v){
    var zone = k;
    $('#zone').append('<option value="'+zone+'">'+zone+'</option>');
});

Fiddle demo

答案 2 :(得分:1)

我认为你真的在寻找第一套 indices (或索引)。您可以删除var zone行,只需将zone替换为第二个循环行上的index

如果您有:

,也可供将来参考
obj = { "akey": 5 };
index = "akey";

您似乎尝试将值检索为“obj.index”。检索数字5的方法就像这样......

obj[index] // evalutes to 5

答案 3 :(得分:1)

按如下方式设置zone

var zone = JSON.stringify(index);

答案 4 :(得分:0)

我不知道如何使用jQuery.each,但你可以得到这样的区域名称:

for (var zone in data) {
  $(#zone").append('<option value="'+zone+'">'+zone+'</option>');
}
相关问题