Javascript 复杂JS对象
我正在处理一个相当复杂的JSON数组,如下所示。我正在尝试创建一个包含访问的Country对象数组。以下是该阵列的一个示例:Javascript 复杂JS对象,javascript,json,google-visualization,webtrends,Javascript,Json,Google Visualization,Webtrends,我正在处理一个相当复杂的JSON数组,如下所示。我正在尝试创建一个包含访问的Country对象数组。以下是该阵列的一个示例: { "data":[ { "period":"Month", "start_date":"2012-06", "end_date":"2012-07", "attributes":{ }, "measures":{ "Vi
{
"data":[
{
"period":"Month",
"start_date":"2012-06",
"end_date":"2012-07",
"attributes":{
},
"measures":{
"Visits":1000000
},
"SubRows":[
{
"Unknown":{
"measures":{
"Visits":1000
},
"SubRows":null
},
"**":{
"measures":{
"Visits":1000
},
"SubRows":null
},
"Afghanistan":{
"measures":{
"Visits":1000
},
"SubRows":null
},
"Aland Islands":{
"measures":{
"Visits":1000
},
"SubRows":null
},
"Albania":{
"measures":{
"Visits":100
},
"SubRows":null
},
}
]
}
]
}
我正在使用数据[0].SubRows[0]
来深入研究一组country对象,但现在我被难倒了,因为每个子对象的名称都不同,如何在下面找到一个?我的预期输出用于Google Visualization API,如下所示:
var data = google.visualization.arrayToDataTable([
['Country', '% Visits'],
['United Kingdom', 1000],
['United States', 1000],
['France', 1000],
['Australia', 1000],
]);
用于。。。在声明中:
var Country = JSONObject['data']['SubRows'];
var Data = {};
for(name in Country)
{
Data[name] = Country[name]['measures']['Visits'];
}
这应该很容易与您的需要相匹配。用于。。。在声明中:
var Country = JSONObject['data']['SubRows'];
var Data = {};
for(name in Country)
{
Data[name] = Country[name]['measures']['Visits'];
}
这应该很容易与您的需要相匹配。Glibnes在中提出了
for的建议,坚持使用您的变量名(顺便说一句:在JS中,这些是对象,不是数组……嗯,数组是对象,但我不会那么迂腐)
度量现在将是一个一级对象,其中国家是关键,值是访问。请随意添加传统检查,或直接使用这些值来构建内容或。。。随便
如果我理解正确的话,您真正需要的是一个数组:
var result = [['Country', '% Visits']];
for (var cName in data[0].SubRows[0])//your country objects
{
if (data[0].SubRows[0].hasOwnProperty(cName))
{
result.push([cName,data[0].SubRows[0][cName].measures.Visits]);
}
}
result
现在将是一个数组,由数组组成,每个数组有2个值<代码>结果[x][0]
->国家和结果[x][1]
->度量值。访问:
result[1][0] === 'United Kingdom' && result[1][1] == 1000
Glibnes在
建议中使用了for,坚持使用变量名(顺便说一句,在JS中,这些是对象,不是数组……好吧,数组是对象,但我不会那么迂腐)
度量现在将是一个一级对象,其中国家是关键,值是访问。请随意添加传统检查,或直接使用这些值来构建内容或。。。随便
如果我理解正确的话,您真正需要的是一个数组:
var result = [['Country', '% Visits']];
for (var cName in data[0].SubRows[0])//your country objects
{
if (data[0].SubRows[0].hasOwnProperty(cName))
{
result.push([cName,data[0].SubRows[0][cName].measures.Visits]);
}
}
result
现在将是一个数组,由数组组成,每个数组有2个值<代码>结果[x][0]
->国家和结果[x][1]
->度量值。访问:
result[1][0] === 'United Kingdom' && result[1][1] == 1000