如何获取表格内容并将其作为多维数组放入变量中

时间:2014-07-30 19:10:51

标签: javascript jquery html

我想要的是获取表内容并将其作为多维数组放入jquery变量中。这可能吗?谁能给我一个例子谢谢。

enter image description here

4 个答案:

答案 0 :(得分:2)

假设“table content”表示“数据”,您可以将调用嵌套到jQuery.map()fiddle):< / p>

// for each content row, retrieve an array of cell-text values
var data = $.map($("tbody tr"), function (tr) {
    return [$.map(tr.cells, function (td) {
        return $(td).text();
    })];
});

输出:

[
    ["four", "4", "Female"],
    ["one", "1", "Male"],
    ["three", "3", "Female"],
    ["two", "2", "Male"]
]

...并以简单的javascript(fiddle):

var data = [].map.call(document.querySelectorAll("tbody tr"), function (tr) {
    return [].map.call(tr.cells, function(td) {
       return td.textContent; 
    });
});

现在,as others have suggested,你可以(也许应该)考虑一个对象数组(fiddle):

// get the header names so we can use them for our object property names
var names = [].map.call(document.querySelectorAll("thead th"), function (th) {
    return th.textContent;
});

// for each content row, retrieve an object-representation of the data
var data = [].map.call(document.querySelectorAll("tbody tr"), function (tr) {
    return [].reduce.call(tr.cells, function (p, td, i) {
        p[names[i]] = td.textContent;
        return p;
    }, {});
});

输出:

[{
    "Name": "four",
    "Age": "4",
    "Gender": "Female"
}, {
    "Name": "one",
    "Age": "1",
    "Gender": "Male"
}, {
    "Name": "three",
    "Age": "3",
    "Gender": "Female"
}, {
    "Name": "two",
    "Age": "2",
    "Gender": "Male"
}]

在MDN上查看Array.prototype.map()Array.prototype.reduce()

答案 1 :(得分:1)

Vanilla javascript(没有jQuery,因为你没有在最初的问题中说明):

var multArray = []; // The multi dimensional array
var tableId = "#mytable"; // Change this according to your html
var rows = [].slice.call(document.querySelectorAll(tableId + " tr"));
var td, x = 0 , y = 0;

rows.forEach(function(row){
  row = [].slice.call(row.querySelectorAll("td"));
  multArray.push(row.map(function(x){return x.innerHTML || "";}))
})

演示: http://jsbin.com/cireyuka/1/edit

注意:
我必须说,在大多数情况下,多维数组并不是最好的情况。 你想要实现什么目标?

答案 2 :(得分:0)

使用jQuery,你可以试试这个:

var myTableAsArray = (function(){ 
      var retval =[]; 
      $('#your_table').find('tr').each(function(it,ele){ 
          var cells = $(ele).find('td'); 
          var tmp = { 
                    Name: cells.eq(0).text(), 
                    Age: cells.eq(1).text(), 
                    Gender: cells.eq(2).text() 
          }; 
          retval.push(tmp);  
      });  
      return retval; 
    })();

然后你得到一个包含pattmorter评论等对象的数组。

答案 3 :(得分:-1)

我写过的类似的一些示例代码。希望这应该给你一个想法!

   $('#tableAssortmentList tr').each(function () {
        // if you want specific or all cells
        $(this).find('td.cell.id').each(function () {
            //do your stuff, you can use $(this) to get current cell
            priceArray.push($(this).text().substring(1));
        })

    })