将 Immutable.js 个地图列表转换为列表列表,然后将其用作 google 个图表的数据

Transforming Immutable.js List of Maps to a List of Lists and then using this as data for google charts

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

我有一个 Immutable 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 库为 google 图表构建数据 table。结果是该页面的部分内容为空,没有呈现任何内容,也没有记录任何错误。

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>] .

我觉得我做 immutable 转换的方式很老套,因为我今天才开始使用这个库。如果有更好的方法来解决这个问题,请告诉我。

原来这是将 unix 时间戳转换为 Javascript Date 对象的正确模式。

let time_labels = data.map( (ts_obj) => {
    let d = new Date();
    d.setTime(ts_obj.get('Date') * 1000);
    return d;
});

这是因为setTime函数使用毫秒。