简体   繁体   English

如何使用jquery .each()遍历解析的JSON数组

[英]How to loop through parsed JSON array using jquery .each()

I have the following data which is being parsed and then I am looping through to attempt to get each state ID and name. 我有以下正在解析的数据,然后循环浏览以尝试获取每个状态ID和名称。

{
    "billing": {
        "ACT": "Australian Capital Territory",
        "NSW": "New South Wales",
        "NT": "Northern Territory",
        "QLD": "Queensland",
        "SA": "South Australia",
        "TAS": "Tasmania",
        "VIC": "Victoria",
        "WA": "Western Australia"
    },
    "shipping": {
        "ACT": "Australian Capital Territory",
        "NSW": "New South Wales",
        "NT": "Northern Territory",
        "QLD": "Queensland",
        "SA": "South Australia",
        "TAS": "Tasmania",
        "VIC": "Victoria",
        "WA": "Western Australia"
    }
}

 data = '{"billing":{"ACT":"Australian Capital Territory","NSW":"New South Wales","NT":"Northern Territory","QLD":"Queensland","SA":"South Australia","TAS":"Tasmania","VIC":"Victoria","WA":"Western Australia"},"shipping":{"ACT":"Australian Capital Territory","NSW":"New South Wales","NT":"Northern Territory","QLD":"Queensland","SA":"South Australia","TAS":"Tasmania","VIC":"Victoria","WA":"Western Australia"}}'; data = jQuery.parseJSON( data ); billingData = data.billing; $(billingData).each( function( key, value ) { console.log( key + value); }); 
 <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 

I am expecting the console to loop through each state ID and the label, but I get they key as 0 and the value as an object, I have also tried looping through the outputted object (contained in value from the original .each ). 我期望控制台遍历每个状态ID和标签,但是我得到它们的键为0,值作为对象,我也尝试遍历输出的对象(包含来自原始.each值)。

I have also tried looping through billingData[0] . 我也尝试遍历billingData[0]

You need to use jQuery.each() instead of .each() to do this work. 您需要使用jQuery.each()而不是.each()来完成此工作。

The .each() loop through jquery elements but jQuery.each() loop through array or object. .each()遍历jquery元素,而jQuery.each()遍历数组或对象。

 data = '{"billing":{"ACT":"Australian Capital Territory","NSW":"New South Wales","NT":"Northern Territory","QLD":"Queensland","SA":"South Australia","TAS":"Tasmania","VIC":"Victoria","WA":"Western Australia"},"shipping":{"ACT":"Australian Capital Territory","NSW":"New South Wales","NT":"Northern Territory","QLD":"Queensland","SA":"South Australia","TAS":"Tasmania","VIC":"Victoria","WA":"Western Australia"}}'; data = jQuery.parseJSON(data); billingData = data.billing; $.each(billingData, function(key, value) { console.log(key +": "+ value); }); 
 <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 

billingData is not an array. billingData不是数组。 It's an object. 这是一个对象。 jQuery each will let you iterate through an object as though it were an array, or you could just use object methods: each jQuery each可以让您像遍历数组一样遍历对象,也可以只使用对象方法:

 data = '{"billing":{"ACT":"Australian Capital Territory","NSW":"New South Wales","NT":"Northern Territory","QLD":"Queensland","SA":"South Australia","TAS":"Tasmania","VIC":"Victoria","WA":"Western Australia"},"shipping":{"ACT":"Australian Capital Territory","NSW":"New South Wales","NT":"Northern Territory","QLD":"Queensland","SA":"South Australia","TAS":"Tasmania","VIC":"Victoria","WA":"Western Australia"}}'; data = jQuery.parseJSON(data); billingData = data.billing; Object.keys(billingData).forEach(function(key) { console.log(key + ": " + billingData[key]) }) 
 <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 

There are two types of each: 每种都有两种类型:

$.each(array, function( key, value ) { $ .each(array,function(key,value){

}); });

$('.element').each(function () { $('。element')。each(function(){

}); });

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM