【问题标题】:Changing one element of an array of arrays with event使用事件更改数组数组的一个元素
【发布时间】:2013-12-17 15:30:49
【问题描述】:

我有两个下拉菜单,允许用户选择散点图的 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 事件之前声明的,是否可以引用第一个或第二个数组,这样我就不必将整个内容粘贴到事件侦听器中?

【问题讨论】:

  • 我不确定你在问什么。你说的这些事件监听器是什么?看起来 d.xd.y 是单独的值而不是数组。
  • 我将编辑第一篇文章以使事情更清楚
  • 希望这种方式更容易理解!我很难解释我今天想用文字做什么

标签: javascript arrays d3.js


【解决方案1】:

听起来最简单的做法是在全局变量中保留对当前选择的 x 和 y 值的引用。然后代码看起来像这样。

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

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

【讨论】:

  • 只是想补充一点以完成这项工作,我做了以下工作: var selectedX = d3.keys(dataset[0]).filter(function (d) { return d == "foo"; }); var selectedY = d3.keys(dataset[0]).filter(function (d) { return d == "bar"; });
猜你喜欢
  • 2011-08-22
  • 1970-01-01
  • 1970-01-01
  • 2022-10-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多