将变量转换为数组数组

时间:2014-03-29 23:03:36

标签: javascript arrays flot

所以这个让我难过。我需要使用HTML表并生成一个代表每月条目数的折线图。我目前有DataTables为我创建表,并且无法修改源数据。我将使用Flot为我生成折线图。 Flot函数需要一个数据集,如下所示。

预期数据集:

[ [1, 3], [2, 14], [3, 3] ]

DataTables函数fnInitComplete期间,我需要从表数据生成上述数据集并将其传递给Flot函数。这确保了图表与表格一样动态,这是一项要求。

以下是我到目前为止:(不完整的DataTables函数,但此问题不需要其余部分)

$(document).ready(function() {
    // The unimportant DT part
    var sTable = $('#sTable').dataTable({ ... });

    // What I currently have
    var items=[]; // The wrapper for my dataset (array)

    //Iterate all td's in eighth column
    $('#sTable tbody tr td:nth-child(8)').each( function(){

        //convert to jsDate from MySQL timestamp
        var dateParts = $(this).text().split("-");
        var jsDate = new Date(dateParts[0], dateParts[1] - 1, dateParts[2].substr(0,2));
        var n = jsDate.getMonth();
        //In my table I have March (represented as 2) five times so 
        //console.log(n); will print 2 five times.
    });
});

据我所知,这是不幸的。我认为最好的方法是取n值并使其成为变量的名称,这样我就可以将变量定义为2,然后我就可以执行2++之类的操作。这种方式对于每个月返回的数字,我将有一个以该数字命名的变量,它将包含它在.each函数中出现的次数。这也会将变量限制在仅存在的几个月,并允许我简单地创建我需要传递的数据集。

我没有太多使用JavaScript的经验,因此非常感谢任何帮助。

1 个答案:

答案 0 :(得分:0)

创建一个包含每个月的数组,以及从零开始的月份计数,如下所示:

[ [1, 0], [2, 0], ..., [12, 0] ]

使用此代码:

var items = [];
for (var i = 1; i <= 12; i++)
    items.push([i, 0]);

然后在each函数中使用

items[n][1]++;

增加表格中每个月n出现的次数。

之后,您可以使用items数组创建一个邮票图表。