Javascript 使用变量调用dataset d3.js中的数据列

Javascript 使用变量调用dataset d3.js中的数据列,javascript,d3.js,Javascript,D3.js,嘿,伙计们,对不起,如果这是个愚蠢的问题,我真的不知道Javascript/d3.js。因此,基本上我有一个.csv文件,其中包含许多国家及其每年的军事力量数量,如下所示: year,country1,country2,country3,... 1989,192129,129312,12391,... 1990,192913,123131,12331,... 1991,123112,123123,12313,... 我已经做了一个线图,x轴上有年份,y轴上有一个国家的军队 d3.csv(

嘿,伙计们,对不起,如果这是个愚蠢的问题,我真的不知道
Javascript/d3.js
。因此,基本上我有一个
.csv
文件,其中包含许多国家及其每年的军事力量数量,如下所示:

year,country1,country2,country3,...

1989,192129,129312,12391,...

1990,192913,123131,12331,...

1991,123112,123123,12313,...
我已经做了一个线图,x轴上有年份,y轴上有一个国家的军队

d3.csv("data.csv", function(error, data) {
if (error) throw error;
data.forEach(function(d) {
  d.Year = parseTime(d.Year);
  d.NLD = +d.NLD;
});

x.domain(d3.extent(data, function(d) { return d.Year; }));
y.domain([0, d3.max(data, function(d) { return d.NLD; })]);
(NLD是国家代码)以及从

这很好,但现在我的问题是,我可以做一个变量,你可以代替NLD,这样你就可以像

var country = "NLD";
然后放置该变量,使代码如下所示

d3.csv("data.csv", function(error, data) {
if (error) throw error;
data.forEach(function(d) {
  d.Year = parseTime(d.Year);
  d.country = +d.country;
});

x.domain(d3.extent(data, function(d) { return d.Year; }));
y.domain([0, d3.max(data, function(d) { return d.country; })]);
var country = 'NLD'
...
y.domain([0, d3.max(data, function(d) { return d[country]; })]);
把它放在像
d.{country}
这样的花括号中对我也不起作用


如果以前有人问过这个问题,我很抱歉,但我不知道怎么问,我已经搜索过了,什么也找不到。

您可以阅读更多关于它的内容,但基本上属性访问器有两种形式之一,一种是
d.country
中的点访问器,另一种是
d['NLD']
中的方括号访问器。使用点表示法,点后面的任何内容都必须是有效的属性名。在您的代码中
d.country
实际上是在查找对象
d
上的
country
属性的值。在这种情况下,您应该使用方括号访问器。在方括号访问器中,无论您在方括号中放置什么,它的计算结果都将成为访问的属性。所以你的代码看起来像这样

d3.csv("data.csv", function(error, data) {
if (error) throw error;
data.forEach(function(d) {
  d.Year = parseTime(d.Year);
  d.country = +d.country;
});

x.domain(d3.extent(data, function(d) { return d.Year; }));
y.domain([0, d3.max(data, function(d) { return d.country; })]);
var country = 'NLD'
...
y.domain([0, d3.max(data, function(d) { return d[country]; })]);

这相当于写
d['NLD']
,这相当于写
d.NLD

而不是
d.country
使用
d[country]
Omg解决方案很简单哈哈,我以前试过d.{country}和d[country],但都不起作用,但我从来没有想到d[country]。太多了!!