javascript - 如何使用 javascript 从每个 JSON 对象中提取特定属性

标签 javascript jquery arrays json

我有一个 JSON 数据集

[{"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"
    }]
}]

我想从每个键(国家/地区)中提取特定值(例如公路、铁路),并从每个对象中绘制一个单独的饼图。例如,阿尔巴尼亚的一张图表显示了公路和铁路的值(value),然后是数据集中下一个国家的相同图表。

我正在尝试使用以下代码实现此目的:

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);

我收到以下错误:

Uncaught TypeError: Cannot read property '0' of undefined

这里是 JS fiddle对于数据集:

预期的结果是这样的 ["Road", 2.2] 然后我想将它作为数据中所有国家/地区的循环运行以获得类似的数组

最佳答案

您忘记了将 json 字符串解析为 JSONObject,因此您无法从字符串访问 key 属性。

var data = JSON.stringify(countriesByName); 下,您必须像这样解析您的对象:

var data = JSON.parse(data);

完成此操作后,您可以访问 JSONObject 属性。

检查这个Demo .

关于javascript - 如何使用 javascript 从每个 JSON 对象中提取特定属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33756674/

相关文章:

javascript - jQuery:如何创建每个项目有两个值的数组

ios - NSPredicate 导致 App 在 UISearchBar 中输入时崩溃

php - 我们可以对单个表的每个 tr 使用 form 吗?如何?

javascript - 用于滑动菜单的 jQuery toggle()

javascript - 将谷歌地图自动完成限制为仅距给定地址位置 50 英里

ios - 如何使用 swift 创建新数组?

javascript - 使用带有ajax内容的fancybox时如何防止外部滚动?

javascript - 按顺序加载 API 请求 (JavaScript)

javascript - ajax调用后删除元素

javascript - 滚动时锁定表格标题 (ColResizable)