我正在构建一个PhoneGap“应用程序”(发现很难排除哪些是正常工作的),并且有一些动态的JSON结果,这些结果有几个不同的子集,为了显示易于理解的页面,我需要迭代这些子集。
数据看起来像这样(举个例子),在一些子集country2 1/ could 2中,可能存在多个、单个或无一个。
{
months: [
{
index: 201602,
year: "2016",
mon: "February",
country1: [
{
index: 12345678,
l: [
{
name: "Test1",
mname: "Test 1",
net: "February 10, 2016 11:39:00 UTC",
}
]
},
{
index: 23456789,
l: [
{
name: "Test2",
mname: "Test 2",
net: "February 10, 2016 11:39:00 UTC",
}
]
}
],
country2: [ ]
},
{
index: 201603,
year: "2016",
mon: "March",
country1: [
{
index: 546547657654,
l: [
{
name: "Test1",
mname: "Test 1",
net: "March 10, 2016 11:39:00 UTC",
}
]
}
],
country2: []
},
{
index: 201604,
year: "2016",
mon: "April",
country1: [ ],
country2: [
{
index: 78676756,
l: [
{
name: "Test1",
mname: "Test 1",
net: "April10, 2016 11:39:00 UTC",
}
]
}
]
}
]
}我能够将它JSON.parse到变量中,当我将它输出时,我得到
{ months:
[ { index: 201602,
year: '2016',
mon: 'February',
launches: [Object],
tbds: [Object] },
{ index: 201603,
year: '2016',
mon: 'March',
launches: [],
tbds: [Object] },
{ index: 201604,
year: '2016',
mon: 'April',
launches: [],
tbds: [Object] } ] }然后,我使用这段代码试图获取值,但是无论我尝试了什么(点形成、索引),我都无法获得要显示的值(我设法得到了“未定义-未定义”)!
for(var test in data.months){
console.log(data.months[test]);
var year = test.index[i].year;
// var month = data.months.index.mon;
s += "<p>" + year + "-" + month + "</p>";
}
$launchDiv.html(s);有人愿意帮我解释一下怎么处理这件事吗?
谢谢!
发布于 2016-02-10 10:45:08
您可以使用Array.prototype.forEach()。
发行
var year = test.index[i].year;
// var month = data.months.index.mon;首先,测试是一个属性,而不是obj。所以应该是data.months[test]
其次,index是一个属性,而不是一个数组。所以index[i]是undefined,index[i].year也是。你应该试试data.months[test].year
逻辑
var result = "";
obj.months.forEach(function(item) {
result += "<p>" + item.year + "-" + item.mon + "</p>";
item.country1.forEach(function(c) {
result += getObjectInString(c.l[0]);
});
item.country2.forEach(function(c) {
result += getObjectInString(c.l[0]);
});
});
document.getElementById("content").innerHTML = result;
function getObjectInString(obj) {
var keys = Object.keys(obj);
var result = "<ul>";
keys.forEach(function(k) {
result += "<li>" + k + " : " + obj[k] + "</li>";
});
result += "</ul>"
return result;
}代码样本
var obj = {
months: [{
index: 201602,
year: "2016",
mon: "February",
country1: [{
index: 12345678,
l: [{
name: "Test1",
mname: "Test 1",
net: "February 10, 2016 11:39:00 UTC",
}]
}, {
index: 23456789,
l: [{
name: "Test2",
mname: "Test 2",
net: "February 10, 2016 11:39:00 UTC",
}]
}],
country2: []
}, {
index: 201603,
year: "2016",
mon: "March",
country1: [{
index: 546547657654,
l: [{
name: "Test1",
mname: "Test 1",
net: "March 10, 2016 11:39:00 UTC",
}]
}],
country2: []
}, {
index: 201604,
year: "2016",
mon: "April",
country1: [],
country2: [{
index: 78676756,
l: [{
name: "Test1",
mname: "Test 1",
net: "April10, 2016 11:39:00 UTC",
}]
}]
}]
}
var result = "";
obj.months.forEach(function(item) {
result += "<p>" + item.year + "-" + item.mon + "</p>";
item.country1.forEach(function(c) {
result += getObjectInString(c.l[0]);
});
item.country2.forEach(function(c) {
result += getObjectInString(c.l[0]);
});
});
document.getElementById("content").innerHTML = result;
function getObjectInString(obj) {
var keys = Object.keys(obj);
var result = "<ul>";
keys.forEach(function(k) {
result += "<li>" + k + " : " + obj[k] + "</li>";
});
result += "</ul>"
return result;
}<div id="content"></div>
发布于 2016-02-10 10:35:21
使用基于索引的循环遍历JSON-结构:
for (var i = 0; i < data.months.length; i++) {
var year = data.months[i].year;
var month = data.months[i].mon;
s+= '<p>' + year + '-' + month;
}
$launchDiv.html(s);https://stackoverflow.com/questions/35312526
复制相似问题