gpt4 book ai didi

javascript - 尝试使用 d3.max 返回最大日期

转载 作者:行者123 更新时间:2023-11-29 10:33:38 26 4
gpt4 key购买 nike

我有如下代码:

var latestMth
d3.csv(barDataCSV_Mth, function(rows) {
x = rows.map(function(d) {
return {
"month": parseDate(d.dt)
};
})
latestMth = d3.max(d3.values(x));
});

“barDataCSV_Mth”中的数据是这样的:

measure,group,dt,amount
Revenue,B,11/1/2015,10
Revenue,B,12/1/2015,23456
Revenue,B,1/1/2016,2346
Revenue,B,2/1/2016,2346
Revenue,B,3/1/2016,656
Revenue,B,4/1/2016,346
Revenue,B,5/1/2016,2346
Revenue,B,6/1/2016,346
Revenue,B,7/1/2016,2346

为什么它返回 2015 作为最大值?


注意

我正在使用 d3.v3。
解析日期函数为:var parseDate = d3.time.format("%m/%d/%Y").parse;

最佳答案

d3.max:

Returns the maximum value in the given array using natural order

您现在拥有的是一组对象,这就是它不起作用的原因。

解决方案一

一个选项是更改您的 x 变量,因此您有一个平面数组值,d3.max 可以在其上工作:

x = rows.map(function(d) {
return parseDate(d.dt)
});
latestMth = d3.max(d3.values(x));

console.log(latestMth);//returns Fri Jul 01 2016

方案二

或者,如果您不想更改 x,请不要使用 d3.values,它:

Returns an array containing the property values of the specified object.

相反,请使用 map

事实上,此“解决方案 2”是首选解决方案,因为 map 是使用 d3 在对象数组中查找最大值/最小值的最常用方法。 maxd3.min:

latestMth = d3.max(x.map(d=>d.month));

这样做,您可以将 x 保留为一个对象数组:

x = rows.map(function(d) {
return {
"month": parseDate(d.dt)
};
});
latestMth = d3.max(x.map(d=>d.month));

console.log(latestMth);//returns Fri Jul 01 2016

关于javascript - 尝试使用 d3.max 返回最大日期,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40709961/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com