将表转换为多维数组

时间:2012-05-25 14:44:38

标签: javascript jquery arrays html-table

我有点像一个JavaScript菜鸟,因此解决方案可能比我意识到的更基本。我正在尝试从此表中获取数据并将其显示在数组中。表格如下:

<table id="myTable">
     <col>
        <thead>
             <tr>
                <th>Date</th>
                <th>Results1</th>
                <th>Results2</th>
            </tr>
         </thead>
         <tbody>
             <tr>
                <td>Jan-00</td>
                <td>9</td>
                    <td>10</td>
             </tr>
             <tr>
                <td>Feb-00</td>
                <td>92</td>
                <td>64</td>
             </tr>

从那里继续(这是一张包含大量<tr>的长桌)。

我获取变量的代码从以下开始(给其他来源提供帮助以解决这个问题):

var columns = $('#myTable thead th').map(function() {
        return $(this).text();
    });
    var tableObject = $('#myTable tr').map(function(i) {
        var row = {};
        // Find all of the table cells on this row.
        $(this).find('td').each(function(i) {
        // Determine the cell's column name by comparing its index
        //  within the row with the columns list we built previously.
        var rowName = columns[i];
        // Add a new property to the row object, using this cell's
        //  column name as the key and the cell's text as the value.
            row[rowName] = $(this).text();
        });
        // Return the row's object representation, to be included
        //  in the array that $.map() ultimately returns.
        return row;
        // .get() to convert the jQuery set to a regular array.
        }).get();
        for (var i in tableObject) {
            $.each(tableObject[i], function(key,value) { 
                var line1 = {};
                line1[key] = value;
                console.log(line1); //test
            });
        }

在console.log测试中,变量line1现在显示其持有键和值,如下所示:日期:Jan 00,Results1:9,Results2:10。

这一切都很好,但我确实需要以下列格式将这些值转换为新数组:

var new = [[Date, Results1], [Date, Results2], etc...];

道歉,如果我重复一个问题,但找不到我想要的东西。非常感谢任何人都能提供的帮助。

2 个答案:

答案 0 :(得分:1)

这应该这样做:

var ary = [];
$('tr').each(function() {
    date = $('td:first', this).text();
    $('td:gt(0)', this).each(function() {
        ary.push([date, $(this).text()]);
    });
});

答案 1 :(得分:0)

看看http://www.w3schools.com/jsref/dom_obj_table.asp 我建议使用 tableObject .rows来获取包含单元格的行数组。然后使用 .cells获取所有单元格元素。 它可能看起来像

   var table =document.getElementById("myTable")
  var foo = new array(table.rows.length);
  for(var j =0; j<foo.length; j++)
   foo[j]=foo[j].cells;

这将为您提供一个名为foo的二维数组表。在表格中被复制 FOO [rowIndex位置] [COL / cellindex] (即foo [0] [1]将返回结果1;

希望这可以帮助你开始