d3.nest()将csv转换为json

时间:2017-10-14 00:55:47

标签: javascript json csv d3.js

我想使用d3.nest()从csv创建嵌套的json文件,但是,我无法正确嵌套。我的输出如下: enter image description here

哪个接近但不完全 - 我希望这些价值观 键 值:     0:等     1:等等

这是我的代码:

d3.csv(“data / fifa-matches.csv”,function(error,matchesCSV){

    //Loads in the tree information from fifa-tree.csv and calls createTree(csvData) to render the tree.
    matchesCSV.forEach(function(d, i) {

        this.teamData = d3.nest()
            .key(function(d) {
                return d.Team;
            })

        .rollup(function(d) {
                return {
                    Result: { 'Label': d.Result, 'Rank': 'test' },

                    // total: d3.sum(v, function(d) { return d.amount; }),
                    // avg: d3.mean(v, function(d) { return d.amount; })
                }
            })
            .entries(matchesCSV);
        console.log(this.teamData);
    });

    d3.csv("data/fifa-tree.csv", function(error, treeCSV) {

        //Create a unique "id" field for each game
        treeCSV.forEach(function(d, i) {
            //console.log(d);
            d.id = d.Team + d.Opponent + i;
            d.type = d.Type;


        });

非常感谢正确方向的任何信息!

以下是csv的结构示例:

球队,对手,进球,进球,三角进球,胜利,失利,成绩 巴西,德国,1,7,-6,0,1,半决赛 德国,阿根廷,1,0,1,1,0,赢家 阿根廷,荷兰,0,0,0,1,0,半决赛 荷兰,巴西,3,0,3,1,0,第四名 巴西,哥伦比亚,2,1,1,1,0,四分之一决赛 法国,德国,0,1,-1,0,1,四分之一决赛

1 个答案:

答案 0 :(得分:2)

如果要指定与键对应的每个对象中的内容,可以使用.rollup()函数

this.teamData = d3.nest()
    .key(function(d) {
        return d.Team;
    }).rollup(function(match_object) { 
        return {
            opponent: match_object[0]["Opponent"],
            Goals Made: match_object[0]["Goals Made"],
            ..etc...
}).entries(matchesCSV);

并从treeCSV返回一个数组

function ReturnTeam(teamname){
    for(team in treeCSV) {
        if(teamname === team.Name) {
            return team;
        }
    }
}