我正在尝试将一些数组值传递给d3 scaleLinear函数。当前函数如下所示:
const y = d3.scaleLinear()
.domain([0, d3.max(data, d =>
d.public +
d.private
)])
.range([height, 0]);
我想做的是从一个数组中传递d.public
和d.private
,这个数组定义了:
const keys = [
"private",
"public"
]
这样我就可以在函数中使用它们(并根据数据传递不同的键),如下所示:
const y = d3.scaleLinear()
.domain([0, d3.max(data, d =>
`d.${keys[0]}` +
`d.${keys[1]}`
)])
.range([height, 0]);
我已经尝试了上面语法的几种不同变体,但都没有成功。
1条答案
按热度按时间5sxhfpxr1#
您正在将字符串文本而不是值传递给域。
d.${keys[0]}
将转换为'd.private'而不是object.private使用函数或传递d[keys[0]]..下面用函数为您做一个示例(如果您有复杂的数据,它将提供更好的灵活性)第一个