d3.max没有得到正确的值

chr*_*ina 5 javascript max d3.js

d3.js用来渲染一些数据,数据集是一个这样的csv文件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
Run Code Online (Sandbox Code Playgroud)

但是,当我使用以下代码来获取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);
Run Code Online (Sandbox Code Playgroud)

如果您更改2000999,您将获得999最大值.它似乎只用相同数量的数字给出答案.

这是什么问题?

Ale*_*x_B 19

更改代码以将持续时间值解析为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);
    });
Run Code Online (Sandbox Code Playgroud)

谢谢你的问题,我打赌很多人以前都有这个!

再见,亚历克斯