【问题标题】:How to iterate json data in jquery如何在jquery中迭代json数据
【发布时间】:2010-11-20 15:07:18
【问题描述】:

如何在jquery中迭代json数据。

[{"id":"856","name":"India"},
 {"id":"1035","name":"Chennai"},
 {"id":"1048","name":"Delhi"},
 {"id":"1113","name":"Lucknow"},
 {"id":"1114","name":"Bangalore"},
 {"id":"1115","name":"Ahmedabad"},
 {"id":"1116","name":"Cochin"},
 {"id":"1117","name":"London"},
 {"id":"1118","name":"New York"},
 {"id":"1119","name":"California"}
]

【问题讨论】:

    标签: jquery json


    【解决方案1】:

    你可以像这样使用$.each()

    $.each(data, function(i, obj) {
      //use obj.id and obj.name here, for example:
      alert(obj.name);
    });
    

    【讨论】:

    • 如果我不知道 JSON 对象中键和值的名称怎么办?
    • 参数列表中的iobj 是什么?
    • @Adamnick 我大胆猜测i 是索引,obj 是构成每个元素的对象。
    【解决方案2】:

    你也可以使用普通的 javascript,我认为这会更快一些(虽然我不太确定 jQuery 如何优化 each):

    var data = [{"id":"856","name":"India"},
     {"id":"1035","name":"Chennai"},
     {"id":"1048","name":"Delhi"},
     {"id":"1113","name":"Lucknow"},
     {"id":"1114","name":"Bangalore"},
     {"id":"1115","name":"Ahmedabad"},
     {"id":"1116","name":"Cochin"},
     {"id":"1117","name":"London"},
     {"id":"1118","name":"New York"},
     {"id":"1119","name":"California"}
    ];
    
    var data_length = data.length;
    for (var i = 0; i < data_length; i++) {
      alert(data[i]["id"] + " " + data[i]["name"]);
    }
    

    编辑以反映尼克对性能的建议

    【讨论】:

    • 视情况而定,访问.length 并非易事,因此如果性能受到关注,最好将其缓存。
    【解决方案3】:

    您可以使用.each() 函数:

    $(yourjsondata).each(function(index, element) {
        alert('id: ' + element.id + ', name: ' + element.name);
    });
    

    【讨论】:

    • .each() 用于对不包含普通数组的 jQuery 对象进行操作,最好按照预期使用$.each()
    • @Nick,我认为 jquery 对象(例如从 jquery 选择器返回的对象)是普通数组。我同意你的观点,在这种情况下,静态 $.each 方法会更合适。
    • 它们还有很多其他属性,不过你可以使用.get()(内部是.toArray())来获取DOM元素的基本数组。
    • @Nick,是的,我知道这个数组中的对象是增强的,具有额外的属性和方法。
    • 也许有细微的差别,但我认为更准确的说法是,jQuery 对象是使用 Array 的某些属性增强的对象。否则,这意味着它们具有数组的全部功能。
    【解决方案4】:

    使用 $.each 函数迭代所有对象的属性。在每次迭代中,您将获得属性的名称/键和值:

    $.each(data, function(key, val) {
      alert(key+ " *** " + val);
    });
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-05-04
      • 1970-01-01
      • 1970-01-01
      • 2016-01-10
      • 2020-08-23
      • 2011-09-05
      相关资源
      最近更新 更多