在以下代码段中,hour: +date.getHours()
将引发错误ReferenceError: date is not defined
。
data = d.Data.slice(0, ncandles).map(function(d) {
return {
date: new Date(d.time * 1000),
hour: date.getHours(), //date is not defined
open: +d.open,
high: +d.high,
low: +d.low,
close: +d.close,
volume: +d.volume
};
}).sort(function(a, b) { return d3.ascending(accessor.d(a), accessor.d(b)); });
到目前为止,我唯一能够获取时间的方法是通过创建一个新的对象,并在行hour: new Date(d.time * 1000).getHours()
如下所示。当已经创建了一个新对象时,似乎是多余且效率低下的。在该范围内,我该如何处理来自date
的数据?
data = d.Data.slice(0, ncandles).map(function(d) {
return {
date: new Date(d.time * 1000),
hour: new Date(d.time * 1000).getHours(),
open: +d.open,
high: +d.high,
low: +d.low,
close: +d.close,
volume: +d.volume
};
}).sort(function(a, b) { return d3.ascending(accessor.d(a), accessor.d(b)); });
答案 0 :(得分:2)
data = d.Data.slice(0, ncandles).map(function(d) {
let date = new Date(d.time * 1000)
return {
date: date,
hour: date.getHours(),
open: +d.open,
high: +d.high,
low: +d.low,
close: +d.close,
volume: +d.volume
};
}).sort(function(a, b) { return d3.ascending(accessor.d(a), accessor.d(b)); });
另一种方式
data = d.Data.slice(0, ncandles)
.map(function(d) {
let obj = {
date: new Date(d.time * 1000),
open: +d.open,
high: +d.high,
low: +d.low,
close: +d.close,
volume: +d.volume,
}
obj.hour = obj.date.getHours()
return obj
})
.sort(function(a, b) {
return d3.ascending(accessor.d(a), accessor.d(b))
})