如何在javascript中迭代json数组
如何在javascript中迭代json数组
是的,关于这个问题有很多帖子。但是我的疑问有点不同。我有以下示例数组\n
var dictionary = { "12Jan2013": [{ "id": "0", "name": "ABC" }, { "id": "1", "name": "DEF" }], "13Jan2013": [{ "id": "0", "name": "PQR" }, { "id": "1", "name": "xyz" }] };
\n在同一网站上有相同的帖子,但是在这个字典的json
数组键是动态的。这里是日期,例如12Jan2013。它可以是任何日期。它不是静态的。我搜索了一下,但是没有找到解决方法。\n如何迭代这样一个json数组?\n以及如何按照上面显示的相同格式打印json数组?\n编辑\n这是我的真实代码。我在下面的代码中显示了一个注释,我希望在getWeatherDataForCities
回调中迭代数据,即jsonData
变量\n
var arrAllrecords = []; var arrCityrecordForADay = []; function getWeatherDataForCities(cityArray, callback){ var toDaysTimestamp = Math.round((new Date()).getTime() / 1000) - (24*60*60); for(var i in cityArray){ for(var j=1; j<=1; j++){ var jsonurl = "http://api.openweathermap.org/data/2.5/history/city?q="+cityArray[i]+"&dt="+toDaysTimestamp; $.ajax({ url: jsonurl, dataType: "jsonp", mimeType: "textPlain", crossDomain: true, contentType: "application/json; charset=utf-8", success: function(data){ var arrCityRecordForDay = []; /*arrCityrecordForADay.push(data.list[0].city.name); arrCityrecordForADay.push(data.list[0].weather[0].description); arrCityrecordForADay.push(timeConverter(data.list[0].dt)); arrCityrecordForADay.push(data.list[0].main.temp); arrCityrecordForADay.push(data.list[0].main.humidity); arrCityrecordForADay.push(data.list[0].main.pressure) arrCityrecordForADay.push(data.list[0].wind.speed);*/ //'{"pets":[{"name":"jack"},{"name":"john"},{"name":"joe"}]}'; arrCityRecordForDay.push( {"cityName" : data.list[0].city.name}, {"weather" : data.list[0].weather[0].description} ); var tempId = data.list[0].city.name+"-"+timeConverter(data.list[0].dt); arrCityrecordForADay.push( {tempId : arrCityRecordForDay} ); if(((arrCityrecordForADay.length)) === cityArray.length) { callback(arrCityrecordForADay); } } }); toDaysTimestamp = toDaysTimestamp - (24*60*60); } } } $(document ).ready(function() { var cityArray = new Array(); cityArray[0] = "pune"; getWeatherDataForCities(cityArray, function(jsonData) { // 这里我想迭代jsonData }); });
问题的原因是用户想要了解如何在JavaScript中迭代JSON数组。解决方法是使用for循环来迭代数组中的每个元素,并在内部循环中访问对象的属性。
用户提供的代码示例中,使用for循环遍历dictionary数组对象。在外部循环中,变量i包含了数组的日期。在内部循环中,变量n遍历了字典数组对象中的内部数组对象。可以通过dictionary[i][n].id和dictionary[i][n].name访问每个对象的属性。
用户还提供了一个jsfiddle链接,以演示迭代的结果。迭代的结果显示了每个日期的id和name属性。
最后,用户询问了关于创建动态JSON数组的问题,并询问自己的方法是否正确。回答是,这取决于在ajax调用中的data对象的结构,但基本概念是相同的。
在这段代码中,问题的原因是需要遍历一个JSON数组,并对每个元素执行一些操作。代码中使用了for-in循环和forEach函数来实现这个目标。解决方法是使用for-in循环遍历字典对象,然后对字典中的每个JSON数组使用forEach函数进行操作。
代码中的for-in循环遍历字典对象,然后使用forEach函数遍历每个JSON数组并执行指定的操作。通过这个代码,可以得到每个JSON数组中的元素和索引。可以根据需要修改forEach函数的定义来执行其他操作。
另外,代码中还使用了Object.keys函数来实现相同的功能。使用Object.keys函数来遍历字典对象的键,并使用forEach函数遍历每个JSON数组执行操作。
代码中还给出了一个通用的函数strung,用于处理不同类型的组件。这个函数可以处理数组、对象和字符串或数字类型的数据。通过递归调用,可以处理复杂的JSON对象。
最后,代码中还提到了使用hasOwnProperty方法来过滤继承的属性。然而,在这种情况下,这个方法可能不是很相关。
总之,这段代码提供了几种遍历JSON数组的方法,以及处理不同类型组件的通用函数。通过使用这些方法,可以轻松地遍历和操作JSON数组中的元素。