gpt4 book ai didi

javascript - 如何将变量带入 d3 中的 .each 方法的范围

转载 作者:行者123 更新时间:2023-11-30 13:06:47 34 4
gpt4 key购买 nike

我正在使用 d3 并希望将一些变量传递到由 selection.each() 调用运行的函数的范围内。我在外部函数中声明变量 eD,然后在该函数中,在声明我的变量之后,对类 的所有内容运行匿名函数>.点数。我的问题是,如果不将它们设为全局变量,我似乎无法将 De 放入内部函数的范围内。有没有一种简单的方法可以将它们传递给内部函数?

function endSelection(d){
var e = selector.extent();
var D = d;

mainSVG.selectAll(".points")
.each(function(d){
if(d[D.x] >= e[0][0]){
d3.select(this).call(addClass,["foo"])
d3.select(this).call(removeClass,["bar"])
} else {
d3.select(this).call(addClass,["bar"])
d3.select(this).call(removeClass,["foo"])
};
});
}

最佳答案

您不需要在该匿名函数的形式参数中列出“d”。

mainSVG.selectAll(".points")
.each(function(){
if(d[D.x] >= e[0][0]){

在外部作用域中声明的变量在内部作用域中总是可用,除非它们被相同标识符的更内部声明“遮蔽”。这就是您的代码中发生的事情。

你根本不需要“D”;仅引用“d”。现在,如果 d3 代码将一些有用的东西传递给用作 .each() 迭代器的函数,则声明它,但给它一个不同于“d”的名称:

mainSVG.selectAll(".points")
.each(function(not_d){
if(not_d[d.x] >= e[0][0]){

关于javascript - 如何将变量带入 d3 中的 .each 方法的范围,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15388078/

34 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com