使用event更改数组数组的一个元素

时间:2013-12-17 15:30:50

标签: javascript arrays d3.js

我有两个下拉菜单,允许用户选择x&散点图的y轴。在散点图中还绘制了一条线性回归线,所以我希望在两轴上的值发生变化时更新它。 为此,我必须相应地更改var points的两个数组,以更改x和/或y轴的值

var points = dataset.map(function (d) { return [parseFloat(d.x), parseFloat(d.y)]; });

(我使用这种数组,因为我使用js库来计算回归的值)
d.x包含x轴的值,d.y y轴' 我想做的是能够只更改数组本身的第一个或第二个数组(d.xd.y)。
为此,我将变量放在事件监听器中,但这是我不知道如何解决的问题:
由于将有two event listeners,一个用于d.x,一个用于d.y,如何在事件监听器中更改数组的d.xd.y值? 现在我有x轴:

.on("change", function () { //other stuff happening, then:
var points = dataset.map(function (d) { return [parseFloat(d[SelX]), parseFloat(d.y)]; });

SelX指的是x轴值已更改并且有效,但我希望它不会更改数组中的d.y值,我不知道正确的语法在不影响数组的第二个值的情况下写入。 或者可能是更好的解决方案: 由于在var points事件之前声明.on change,是否可以引用第一个或第二个数组,因此我不必将整个事物粘贴到事件侦听器中?

1 个答案:

答案 0 :(得分:0)

听起来最简单的事情就是在全局变量中保持对x和y的当前选定值的引用。然后代码看起来像这样。

var chosenX = "foo", chosenY = "bar";

// ...
.on("change", function() {
  chosenX = SelX;
  points = dataset.map(function (d) { return [parseFloat(d[chosenX]), parseFloat(d[chosenY])]; });
});