gpt4 book ai didi

javascript - 如何在javascript中遍历json数组

转载 作者:数据小太阳 更新时间:2023-10-29 04:09:08 25 4
gpt4 key购买 nike

是的,有很多关于这个的帖子。但我的怀疑有点不同。例如,我有以下数组

var dictionary = {
"12Jan2013": [{
"id": "0",
"name": "ABC"
}, {
"id": "1",
"name": "DEF"
}],
"13Jan2013": [{
"id": "0",
"name": "PQR"
}, {
"id": "1",
"name": "xyz"
}]
};

同一站点上有相同的帖子但在字典中 json 数组键是动态的。这是日期,即 2013 年 1 月 12 日。它可以是任何日期。它不是静态的。我已经搜索过了,但没有找到解决方案。

如何遍历这样的json数组?

以及如何在上面显示的相同格式中打印 json 数组?

编辑

这是我的真实代码。我在下面的代码中显示了一条注释,我想在其中迭代数据,即 jsonData var in getWeatherDataForCities 回调

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) {
// Here I want to iterate jsonData
});


});

最佳答案

使用 for-in...类似的东西:

for (var i in dictionary) {
dictionary[i].forEach(function(elem, index) {
console.log(elem, index);
});
}

i 将遍历您的 dictionary 对象,然后您可以对字典中的每个 json 数组使用 forEach(使用 字典[i])

使用这段代码你会得到

Object {id: "0", name: "ABC"} 0 
Object {id: "1", name: "DEF"} 1
Object {id: "0", name: "PQR"} 0
Object {id: "1", name: "xyz"} 1

您可以定制 forEach 函数定义(替换 console.log 位)以用它做任何您想做的事。

DEMO

编辑:使用 Object.keys 做同样的事情

Object.keys(dictionary).forEach(function(key) {
dictionary[key].forEach(function(elem, index) {
console.log(elem, index);
});
});

Edit2:考虑到您的 jsonData 对象的结构有些复杂,您可以尝试使用一种(某种)通用函数来分别作用于每种类型的组件。我可能错过了一些案例,但可能是这样的:

function strung(arg) {
var ret = '';
if (arg instanceof Array) {
arg.forEach(function(elem, index) {
ret += strung(elem) + ',';
});
} else if (arg instanceof Object) {
Object.keys(arg).forEach(function(key) {
ret += key + ': /' + strung(arg[key]) + '/';
});
} else if (typeof arg === "string" || typeof arg === "number") {
ret = arg;
}
return ret;
}

document.body.innerHTML = strung(jsonData);

DEMO

关于javascript - 如何在javascript中遍历json数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20773375/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com