在以下代码段中,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)); });
最佳答案
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))
})