d3.js 无法将数组值中的javascript文字传递给D3函数

vuktfyat  于 2022-11-12  发布在  Java
关注(0)|答案(1)|浏览(131)

我正在尝试将一些数组值传递给d3 scaleLinear函数。当前函数如下所示:

const y = d3.scaleLinear()
        .domain([0, d3.max(data, d =>
          d.public +
          d.private
        )])
        .range([height, 0]);

我想做的是从一个数组中传递d.publicd.private,这个数组定义了:

const keys = [
      "private",
      "public"
    ]

这样我就可以在函数中使用它们(并根据数据传递不同的键),如下所示:

const y = d3.scaleLinear()
        .domain([0, d3.max(data, d =>
          `d.${keys[0]}` +
          `d.${keys[1]}`
        )])
        .range([height, 0]);

我已经尝试了上面语法的几种不同变体,但都没有成功。

5sxhfpxr

5sxhfpxr1#

您正在将字符串文本而不是值传递给域。d.${keys[0]}将转换为'd.private'而不是object.private使用函数或传递d[keys[0]]..下面用函数为您做一个示例(如果您有复杂的数据,它将提供更好的灵活性)
第一个

相关问题