Javascript 为D3.js中的数组对象指定变量名

Javascript 为D3.js中的数组对象指定变量名,javascript,arrays,d3.js,geojson,topojson,Javascript,Arrays,D3.js,Geojson,Topojson,目前的代码运行良好,唯一的补充是我想为使用clicky功能发送到控制台的对象指定一个名称。控制台返回对象{type:“MultiPolygon”,coordinates:Array[1]},我想将其分配给一个变量名,以便稍后在我引入具有相同生成名称的CSV文件时可以引用它。我该怎么做呢 var northcentral = { "47": 1, "37": 1, "45": 1, "13": 1 }; var northcentral_c = { "25": 1, "09": 1, "

目前的代码运行良好,唯一的补充是我想为使用
clicky
功能发送到控制台的对象指定一个名称。控制台返回
对象{type:“MultiPolygon”,coordinates:Array[1]}
,我想将其分配给一个变量名,以便稍后在我引入具有相同生成名称的CSV文件时可以引用它。我该怎么做呢

var northcentral = {
  "47": 1, "37": 1, "45": 1, "13": 1
};

var northcentral_c = {
  "25": 1, "09": 1, "44": 1, "50": 1, "33": 1, "23" :1
};  

var svg = d3.select("svg");

var path = d3.geoPath();

var nc = [];
Array.prototype.push.apply(nc,us.objects.states.geometries.filter(function(d) { return d.id in northcentral; }))
Array.prototype.push.apply(nc,us.objects.counties.geometries.filter(function(d) { return d.id in northcentral_c; }))

svg.append("path")
  .datum(topojson.merge(us, nc))
  .attr("class", "state northcentral")
  .attr("d", path)
  .on("click", clicky);

function clicky(d){
  console.log(d);
}
嗯,有这样一个:

var dWhichWasClicked = null

function clicky(d){
  console.log(d);
  dWhichWasClicked = d
}
通过在
clicky()
之外声明
dWhichWasClicked
,它对该文件中的任何其他代码都是可用的(即在范围内),而如果
dWhichWasClicked
是在
clicky()
内声明的,它将只在该函数的范围内

也就是说,使用全局变量通常是一个坏主意,虽然这种方法不一定是全局变量,但很接近

您可以只使用一个加载csv的函数:

function loadCSV(filename) {
  // load it now
}
并从单击处理程序调用它

function clicky(d){
  console.log(d);
  loadCSV( getFilenameFor(d) )
}