将变量名分配给 D3.js 中的数组对象
Assign a variable name to an array object in D3.js
目前的代码工作正常,唯一的补充是我想为使用 clicky
函数发送到控制台的对象分配一个名称。控制台 returns Object {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
在 [=14= 内部声明] 它只会在该函数的范围内。
也就是说,使用全局变量通常不是一个好主意,虽然这种方法不一定是全局变量,但也差不多。
您可以简单地使用一个加载 csv 的函数:
function loadCSV(filename) {
// load it now
}
并从点击处理程序中调用它
function clicky(d){
console.log(d);
loadCSV( getFilenameFor(d) )
}
目前的代码工作正常,唯一的补充是我想为使用 clicky
函数发送到控制台的对象分配一个名称。控制台 returns Object {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
在 [=14= 内部声明] 它只会在该函数的范围内。
也就是说,使用全局变量通常不是一个好主意,虽然这种方法不一定是全局变量,但也差不多。
您可以简单地使用一个加载 csv 的函数:
function loadCSV(filename) {
// load it now
}
并从点击处理程序中调用它
function clicky(d){
console.log(d);
loadCSV( getFilenameFor(d) )
}