我正在尝试使用谷歌图表库来绘制一些时间序列数据,目前是我从我的应用程序粘贴到单独文件中的一些虚拟数据。
我有一个不可变的List
看起来像这样:
let data = [{"Date":1452457976,"Value":246.712065},{"Date":1452457990,"Value":268.240542}]
我正在尝试将其转换为一个普通的 javascript 数组数组,每个数组包含一个Date
对象和一个值,如下所示。
let row_data = data.map( (list_object) => {
let temp_list = Immutable.List();
temp_list = temp_list.push(new Date(list_object.get('Date')));
temp_list = temp_list.push(list_object.get('Value');
return temp_list;
});
export default row_data.toJS();
我使用此导出的值作为输入,用于使用 react-google-charts 库构建谷歌图表的数据表。结果是页面部分的内容为空,没有呈现任何内容,也没有记录任何错误。
import row_data from 'data';
let options = {...};
let rows = row_data;
let columns = [
{
'type': 'date',
'name': 'Date'
},
{
'type': 'number',
'name': 'Latency'
}
]
this.setState({
'rows': rows,
'columns': columns,
'options': options
});
深入研究堆栈跟踪,看起来作为行传递的参数不属于数组类型,即使记录变量会给我以下信息: Array[<length>]
.
我觉得我进行不可变转换的方式非常笨拙,因为我今天刚开始使用库。请让我知道是否有更好的方法来解决这个问题。
这是将 unix 时间戳转换为 Javascript Date
对象的正确模式。
let time_labels = data.map( (ts_obj) => {
let d = new Date();
d.setTime(ts_obj.get('Date') * 1000);
return d;
});
这是因为setTime
函数使用毫秒。