更新 添加了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]
当滑块位于10/19/2014时,我希望它显示0和6.这几乎就像我需要以某种方式识别没有数据的日期而且:
frequencyArray
?cumulativeFrequencyArray
来显示以前的索引?我也不喜欢我两次访问外部csv文件,但那是另一个问题:)谢谢!
ORIGINAL: 使用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];
我还在reduce()
上使用frequencyArray
来生成以前总和的第三个数组
cumulativeFrequencyArray = [3, 6, 10, 12];
我使用日期滑块显示frequencyArray
和cumulativeFrequencyArray
值的文字(当我滑到10/21/14时,文字会显示" 2& #34;和#34; 12")。我这样说 - "当滑块值等于dateArray
中的值时,显示相应的indexOf
frequencyArray
和cumulativeFrequencyArray
。
这很有效,直到你滑到没有价值的日期,比如10/19/14,显示" NaN"和" NaN"。精细。因此,如果没有找到日期,则将NaN设为零
frequencyArray[indexOfFormattedCurrentDate] = frequencyArray[indexOfFormattedCurrentDate] || 0;
然而不是" 0"和" 6",文本显示" 0"和" NaN"。它很好地为frequencyArray
文本添加了零,但仍然将NaN放在cumulativeFrequencyArray
文本中。
如何将cumulativeFrequencyArray
文本放入以前值的总和?
感谢。
答案 0 :(得分:1)
由于以下因素,你得到了NaN:
var index = dateArray.indexOf('a date that does not exist') // -1
var el = cumulativeFrequencyArray[index] // undefined
thousandSeparator(el) // 'NaN' note that it's a string 'NaN', not the numeric NaN
你应该进行线性搜索,直到找到元素或找到更大的日期而不是indexOf
,我建议将日期解析为数字而不是将它们作为字符串处理