{
"data" : {
"years" : {
"YR1998" : {
"week" : {
"W1" : { "mean": { 7.8 } },
"W2" : { "mean" : { 6.1 } },
}
},
"YR1999" : {
"week" : {
"W1" : { "mean" : { 5.1 } },
"W2" : { "mean" : { 8.1 } },
}
}
}
}
}
我上面有以下json文件,我希望使用d3.max函数找到max“mean”,但似乎无法在y轴上得到结果。我正在使用的代码如下,
var dataset;
d3.json("ili.json", function(error, data) {
dataset = data;
};
var y = d3.scale.linear().domain([0, d3.max(dataset, function(d) {
return d3.max(d.years, function(e) {
return d3.max(e.week, function(f) {
return d3.max(f.week, function(g) {
return g.mean;
}
}
}
}]).range([height, 0]);
答案 0 :(得分:1)
d3.max()
的第一个参数必须是数组;它不适用于键值对象。由于您传入的对象不具有有效的length
属性,因此d3.max
将它们视为空数组,并返回未定义的值。
您可以使用d3.values
从键值对象中创建数组。对于嵌套数据结构,您必须将它应用于嵌套max函数的每一步:
var y=d3.scale.linear().domain([0,
d3.max(d3.values(dataset), function(d) {
return d3.max(d3.values(d.years), function(e) {
return d3.max(d3.values(e.week), function(f) {
return d3.max(d3.values(f.week), function(g) {
return g.mean;
}
}
}
}]).range([height, 0]);