【发布时间】:2015-05-16 23:14:47
【问题描述】:
更新: 添加了JSFIDDLE,并且我更新了此帖子中的原始值以匹配。小提琴不起作用,因为 csv 是外部的。 I tried this,但想不通。但是,至少你可以看到代码。
在我的机器上,第 52-54 行的控制台日志显示:
dateArray ["10/17/0014", "10/18/0014", "10/20/0014", "10/21/0014"]
frequencyArray [3, 3, 4, 2]
cumulativeFrequencyArray [3, 6, 10, 12]
当滑块位于 2014 年 10 月 19 日时,我希望它显示 0 和 6。这几乎就像我需要以某种方式识别没有数据的日期,或者:
- 将零推入
frequencyArray? - 或者我需要
cumulativeFrequencyArray来显示它之前的索引?
我也不喜欢两次访问外部 csv 文件的方式,但这是另一个问题 :) 谢谢!
原文: 使用 D3,我有一个日期的 csv:
timeStamp
10/17/14 02:20:15 PM
10/17/14 08:22:35 AM
10/17/14 09:03:18 AM
10/18/14 02:20:15 PM
10/18/14 08:23:35 AM
10/18/14 09:03:18 AM
10/20/14 08:23:35 AM
10/20/14 10:23:35 AM
10/20/14 02:20:15 PM
10/20/14 02:03:18 AM
10/21/14 04:20:15 PM
10/21/14 09:03:18 AM
我正在制作一个找到的日期数组
dateArray = ['10/17/14', '10/18/14', '10/20/14', '10/21/14']
我正在计算找到的每个日期的出现次数,并将它们放入另一个数组中
frequencyArray = [3, 3, 4, 2];
我还在frequencyArray 上使用reduce() 来生成先前总和的第三个数组
cumulativeFrequencyArray = [3, 6, 10, 12];
我正在使用日期滑块来显示 frequencyArray 和 cumulativeFrequencyArray 值的文本(当我滑动到 2014 年 10 月 21 日时,文本显示“2”和“12”)。我这样做是说 - “当滑块值等于 dateArray 中的值时,显示相应的 indexOf frequencyArray 和 cumulativeFrequencyArray。
这很有效,直到您滑动到没有值的日期,例如 10/19/14,它显示“NaN”和“NaN”。美好的。因此,如果没有找到日期,请将 NaN 设为零
frequencyArray[indexOfFormattedCurrentDate] = frequencyArray[indexOfFormattedCurrentDate] || 0;
但是,文本显示的不是“0”和“6”,而是“0”和“NaN”。它很好地将 frequencyArray 文本设为零,但仍将 NaN 置于 cumulativeFrequencyArray 文本中。
我怎样才能得到cumulativeFrequencyArray 文本来放置先前值的总和?
谢谢。
【问题讨论】:
-
您的控制台是否出现任何错误?我相信您在设置
dates.indexOf(currentDate) = dates.indexOf(currentDate) || 0;时会收到Invalid left-hand side in assignment错误。你能提供其余的代码吗?更好的是,jsfiddle? -
谢谢@Dom。不,没有控制台错误。请参阅上面的更新。谢谢!
-
请不要有“更新”部分。它使阅读帖子变得困难。将其全部重写为一篇连贯的帖子。
标签: javascript arrays date d3.js reduce