如何使用javascript从每个JSON对象提取特定属性
我有一个JSON数据集如何使用javascript从每个JSON对象提取特定属性,javascript,jquery,arrays,json,Javascript,Jquery,Arrays,Json,我有一个JSON数据集 [{"key":"Albania", "values":[{ "Country_Names":"Albania", "Total":"3.8", "Change_total":"-38.7", "Main activity electricity and heat pro
[{"key":"Albania",
"values":[{
"Country_Names":"Albania",
"Total":"3.8",
"Change_total":"-38.7",
"Main activity electricity and heat production":"0.1",
"Main activity electricity plants":"","Main activity CHP plants":"",
"Unallocated autoproducers / Other energy industry own use":"0.1",
"Other":"1.4",
"Manufacturing industries and construction":"1",
"Iron and steel":"0","Chemical and petrochemical":"0","Machinery":"",
"Mining and quarrying":"",
"Food and tobacco":"0.1",
"Paper, pulp and printing":"",
"Construction":"0",
"Transport":"2.2",
"Road":"2.2",
"Domestic aviation":"",
"Rail":"0",
"Domestic navigation":"0.1",
"Residential":"0.2",
"Commercial and public services":"0",
"Agriculture/forestry":"0.2",
"Sub-bituminous coal / Lignite":"",
"Other bituminous coal":"",
"Natural gas":"0",
"Motor gasoline excl. bio":"0.3",
"Gas/diesel oil excl. bio":"2.2"
}]
}]
我想从每个关键点(国家)提取特定的值(例如公路、铁路),并从每个对象中绘制一个单独的饼图。例如,一张显示阿尔巴尼亚公路和铁路价值的图表,然后是数据集中下一个国家的相同图表
我试图通过以下代码实现这一点:
function checkIt(data) {
var countriesByName = d3.nest()
.key(function(d) { return d.Country_Names; })
.entries(data);
//console.log(countriesByName)
var data = JSON.stringify(countriesByName);
console.log(data);
function makePie() {
function myfunc(data){
var obj = [];
for (var i in data.key) {
obj.push('Road' + m.countriesByName[i].key.values[i].Food+ ' and tobacco');
}
}
var data1 = myfunc(data);
//console.log(data)
var chart = c3.generate({
bindto: "#left",
data: {
columns: [
data1
],type : "donut"
}
});
}
makePie();
};
d3.json("https://gist.githubusercontent.com/heenaI/cbbc5c5f49994f174376/raw/82cd19eff7db367193cf8ce00144a40ea8d140ac/data.json", checkIt);
我得到以下错误:
未捕获的TypeError:无法读取未定义的属性“0”
以下是数据集的示例:
预期的结果是这样的[“Road”,2.2],然后我想将其作为数据中所有国家的循环运行,以获得类似的数组您忘记了将json字符串解析为JSONObject,因此无法从字符串访问
键
属性
在var data=JSON.stringify(countriesByName)下代码>必须像这样解析对象:
var data=JSON.parse(数据)代码>
完成此操作后,就可以访问JSONObject属性
检查此项。array.map
将是您将数组修改为最终结果的朋友。和array.reduce
,用于将值
数组转换为某些内容。例如,对所有的rail
值求和。您的图表插件希望使用哪种数据对象,,您应该构造图表所期望的json,并将其作为参数=>undefined发送<代码>数据。键
的工作方式与您预期的不一样我认为…进一步查看代码和错误,它似乎希望在数据对象中有列
。我一直在摆弄它,列:[[data1]],将其转换为2D数组确实可以消除错误,现在的问题是它应该是什么样子?什么样的数据?你所有的代码都是小提琴吗?谢谢你的回答我真正想得到的是我的数据中Rail,Road的值,如果结果是这样的[“Road”,2.2],“Rail”,0],然后对数据集中的所有对象运行这个as循环。当我尝试获取其中的值时,demo jsut会给我国家名称,它会返回undefinedThank。。我想我明白我需要做什么。。但现在这一个只是一次发送所有国家的数据,但我想要的是,它从国家获取道路数据_1=>绘制一个饼=>返回从国家2获取数据=>绘制一个饼。。。国家n=>绘制国家n的饼图。我想我必须这样做,如果我走错了方向,你可以指导我,你是想同时画所有的馅饼,还是想选择一个馅饼然后画出来?我会用下拉菜单选择国家的名称,然后创建一个馅饼,但现在我只想创建一个,看看它是否为每个国家创建一个馅饼