This question already has answers here:
How do I return the response from an asynchronous call?
                            
                                (38个答案)
                            
                    
                2年前关闭。
        

    

因此,我一直试图将头放在d3.js周围,无法终生想出一种拼接数组的方法。在下面的代码中,我正在导入一个csv文件(具有> 30000行),然后尝试通过拼接数组将其子集为前40个值。虽然该命令在控制台选项卡(即data.splice(0,40))中有效,但在脚本中不起作用。我究竟做错了什么?

<script src="//d3js.org/d3.v4.min.js"></script>
<script src="https://d3js.org/d3-array.v1.min.js"></script>
<script>
d3.csv("for_musp.csv", function(data2) {
  data = data2.map(function(d) { return +d["label"] ; });
});
var newData = data.splice(0,40);

};
</script>

最佳答案

试试这个(d3.csv的回调是异步的):

var newData;
d3.csv("for_musp.csv", function(data2) {
  data = data2.map(function(d) { return +d["label"] ; });
  newData = data.splice(0,40);
});

10-08 13:15