d3.max没有得到正确的值

时间:2015-06-16 17:46:41

标签: javascript d3.js max

我正在使用d3.js呈现一些数据,而数据集是一个名为csv的{​​{1}}文件,如下所示:

bar-data.csv

但是,当我使用以下代码获取date,value,duration www.sina.com,53,100 www.baidu.com,165,2000 www.qq.com,269,690 www.youku.com,421,224 www.facebook.com,405,345 www.apple.com,376,777 www.cnn.com,359,298 www.cctv.com,433,333 www.google.com,455,500 www.boston.com,670,274 持续时间时,返回值为maximum而非777(应该是数据集中的最大值)。

2000

如果您将d3.csv("bar-data.csv", function(error, data) { data.forEach(function(d) { d.date = d.date; d.value = d.value; }); var maximum = d3.min(data, function(d) { return d.duration; }); alert ("max is " + maximum); 更改为2000,则会将999作为最大值。它似乎只用相同数量的数字给出答案。

这里的问题是什么?

1 个答案:

答案 0 :(得分:17)

更改代码以将持续时间值解析为Int可以解决问题,并使用d3.forEach函数处理它们。见下文:

d3.csv("test.csv", function(error, data) {
        console.log(data);
        data.forEach(function(d) {
            d.date = d.date;
            d.value = d.value;
            d.duration = parseInt(d.duration);
        });

        var maximum = d3.max(data, function(d) { return d.duration; });
        console.log("max is " + maximum);
    });

感谢您提出的问题,我打赌以前很多人都有这个问题!

再见,亚历克斯