在D3中将函数放入defer()后,console.log中的数据结构在其他函数中已更改

时间:2018-10-23 12:40:18

标签: javascript html d3.js

以下代码段是我的代码,将从csv文件中获取数据。

d3.queue()
    .defer(d3.csv, "sales.csv", function(d){
        //d.decade = d.decade.replace("-","_")
        //console.log('lalala')
    })
    .await(ready)

然后这是将创建气泡的功能。

function ready(error,datapoints){
    console.log(datapoints)
    var circles = svg.selectAll(".artist")
    .data(datapoints)
    .enter().append("circle")
    .attr("class","artist")// the ".artist" will transform into class name in HTML
    .attr("r", function(d){
        return radiusScale(d.sales)
    })
    .attr("fill","lightblue")
    .on("click",function(d){
        console.log(d)
    })
    //.attr("cx",100)
    //.attr("cy",300)

    simulation.nodes(datapoints)
        .on('tick', ticked)

    function ticked(){
        circles
            .attr("cx",function(d){
                return d.x
            })
            .attr("cy", function(d){
                return d.y
            })
    }
}

当我执行console.log(dataset)时出现问题。每当我有

function(d){
        d.decade = d.decade.replace("-","_")
    }

在我的

.defer(d3.csv, "sales.csv", function(d){
        d.decade = d.decade.replace("-","_")
    })

console.log(datapoints)中的结果将如下所示: weird_result

如果我删除

function(d){
        d.decade = d.decade.replace("-","_")
    }

变为:

defer(d3.csv, "sales.csv")

结果将是正常的,如下所示: normal_result

有人可以向我解释为什么吗?在这种情况下如何处理数据呢?

1 个答案:

答案 0 :(得分:0)

在函数末尾添加return d;