将不可变.js地图列表转换为列表列表,然后将其用作Google图表的数据



我正在尝试使用谷歌图表库来绘制一些时间序列数据,目前是我从我的应用程序粘贴到单独文件中的一些虚拟数据。

我有一个不可变的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函数使用毫秒。

最新更新