jQuery循环.each()JSON键/值不起作用

Posted

技术标签:

【中文标题】jQuery循环.each()JSON键/值不起作用【英文标题】:jQuery looping .each() JSON key/value not working 【发布时间】:2013-11-26 23:55:38 【问题描述】:

我在通过 jQuery .each() 函数循环 JSON 的键/值时遇到问题

最初我有一个这样的 JSON:

json = "aaa":[
              "id":"1","data":"aaa1data"
              ,"id":"2","data":"aaa2data"
              ],
        "bbb":[
              "id":"3","data":"bbb1data"
              ]
       

我想遍历 JSON(aaa 和 bbb)中的所有键/值元素并检索内部 JSON 数组以再次循环,所以我尝试了

$(json).each(function(index,data)

    var zzz = data;
    $(zzz).each(function(index,data))
    
       //some other stuff
    

然而,我发现第一个.each()函数会将整个json视为一个单独的结构,不会循环其元素的key。从.each()函数接收到的数据参数始终是原始json本身.我永远无法获得指向 aaa 和 bbb 的内部 JSON 数组的引用。

这里会出现什么问题,我应该如何通过 jQuery 正确循环 JSON 中的所有键/值元素?

【问题讨论】:

【参考方案1】:

由于您有一个对象,而不是 jQuery 包装器,因此您需要使用 $.each() 的不同变体

$.each(json, function (key, data) 
    console.log(key)
    $.each(data, function (index, data) 
        console.log('index', data)
    )
)

演示:Fiddle

【讨论】:

有效!感谢您的解释,因为我不知道 $.each() 和 $(selector).each() 的工作方式不同:)。 @Arun p Johny - console.log('index', data) 这里的数据是参数或数组索引,与数据这个词混淆了,如果我只想要第二个值,我怎么能得到?没有身份证? 我的json是 "0":"tech_id":"35","tech_name":"Ajax", "1":"tech_id":"36","tech_name":"Ajax" 【参考方案2】:

有了一个简单的 JSON 对象,你就不需要 jQuery:

for (var i in json) 
   for (var j in json[i]) 
     console.log(json[i][j]);
   

【讨论】:

以上是关于jQuery循环.each()JSON键/值不起作用的主要内容,如果未能解决你的问题,请参考以下文章

如何在 jQuery 中解析 JSON 数组?

在.each循环jquery中增加索引值几次

带有 JSON 数组的 jQuery 'each' 循环

Django dict键,for循环中的值不起作用

急! jquery $.each 嵌套循环遍历

jQuery:正确循环对象?