如何覆盖函数内的数组?

How to overwrite the array inside a function?

我在 D3.js 中遇到了问题。 我可以点击圈子并与他们互动。 为了意识到这一点,我定义了一个名为

的数组
var array123

在要点击圆圈的函数内。现在有了这个数组,我可以在其中保存设置,例如更改更多圆圈的大小或颜色。 该函数如下所示:

      circle.on("click", function (d) {

        var array123 = start && start.path(d) || []
    link.style("stroke", function(d) 
                    {
                      return array123.includes(d.source) && array123.includes(d.target) ? "red" : "green";   
                    });
start = d
        .....}

我现在的问题是,这些设置已保存,一旦点击一个圈子,再次点击其他圈子时就会更新。 问题是,如何从外部重置数组的内存?例如,我可以创建一个矩形,当我点击它时,它会重置 array123 的所有内存?我尝试使用具有确切名称 (array123) 的数组来执行此操作,但我不会覆盖第一个。

像这样在函数外声明数组变量:

var array123; circle.on("click", function (d) { array123 = start && start.path(d) || []; code to maipulate and save the array .....}

然后您可以在范围内的任何其他地方使用相同的变量。通过在内部声明一个变量,您限制了范围。