数组的数组格式问题

Array of arrays format issue

本文关键字:数组 问题 格式      更新时间:2023-09-26

我有以下数据格式(存储在变量matrixData中):

{
    "header": ["Date", "Total", "Breakdown"],
    "data": [
        [
            "2014-06-05",
            5340,
            {
                "header": ["BookingCount", "LastYearDifference"],
                "data": [[506, 46], [524, 34], [448, 25]]
            }
        ],
        [
            "2014-06-06",
            14339,
            {
                "header": ["BookingCount", "LastYearDifference"],
                "data": [[506, 46], [432, 92], [498, 37]]
            }
        ]
    ]
}

我需要将其更改为我可以通过以下函数从Google Charts传递的内容:

function drawChart() {
    var data = google.visualization.arrayToDataTable([]);
}

然后将该数据传递到以下模板中:

<script type="text/html" id="tableContent">
      <tr>
        <td data-content="Date"></td>
        <td data-content="BookingCount0"></td>
        <td data-content="BookingCount1"></td>
        <td data-content="BookingCount2"></td>
        <td data-content="BookingCount3"></td>
        <td data-content="BookingCount"></td>
        <td data-content="BookingCount"></td>
        <td data-content="BookingCount"></td>
        <td data-content="BookingCount"></td>
        <td data-content="BookingCount"></td>
        <td data-content="BookingCount"></td>
        <td data-content="BookingCount"></td>
        <td data-content="BookingCount"></td>
        <td data-content="BookingCount"></td>
        <td data-content="BookingCount"></td>
        <td data-content="BookingCount"></td>
        <td data-content="BookingCount"></td>
        <td data-content="BookingCount"></td>
        <td data-content="BookingCount"></td>
        <td data-content="BookingCount"></td>
        <td data-content="BookingCount"></td>
        <td data-content="BookingCount"></td>
        <td data-content="BookingCount"></td>
        <td data-content="BookingCount"></td>
        <td data-content="BookingCount"></td>
        <td data-content="Total"></td>
      </tr>
</script> 

这将是一个每周报告,因此模板将重复7次。

我正在尝试使用下面的函数,但没有成功:

function generateObject(){
    var newarray = [],
        thing;
    for(var y = 1; y < matrixData.Data.length; y++){
        thing = {};
        for(var i = 0; i < matrixData.Data[0].length; i++){
            if (i > 0) {
              thing[matrixData.Data[0][i]] = matrixData.Data[y][i];
            }
        }
        newarray.push(thing);
    }
    return newarray;
}

可能是因为函数是arrayToDataTable而不是arrayWithObjectsToDataTable。文档说明:

这个方法不支持[…]使用JavaScript文字单元格对象的f或v值:{v: 3.0, f: 'Three'}。如果您需要指定自定义单元格值,或格式化值,或日期/日期时间值,请使用DataTable.addRow()/DataTable.addRows()或DataTable.setValue()。

因此,解决方案是使用DataTable.addRow()或将thing更改为数组并将您的值推入其中。至于对象的键值对中的keys,文档说:

如果opt_firstRowIsData为false(默认),第一行将被解释为标题标签

所以只要把你的header作为第一个数组。