在不使用jQuery的情况下将表转换为JavaScript中的数组

Pra*_*tha 9 html javascript arrays

我需要根据表中的内容将我创建的表格转换为多维数组.数组的格式如下:

 var array = [
               [column,column,...],
               [column,column,...],
               ...
              ];
Run Code Online (Sandbox Code Playgroud)

如何在不使用jQuery的情况下使用纯JavaScript进行此操作?我找到的所有答案都在jQuery中.

JSFiddle.

Min*_*our 16

使用qSA并且Array.prototype.map非常简单.

var tableInfo = Array.prototype.map.call(document.querySelectorAll('#tableId tr'), function(tr){
  return Array.prototype.map.call(tr.querySelectorAll('td'), function(td){
    return td.innerHTML;
    });
  });
Run Code Online (Sandbox Code Playgroud)


Rob*_*obG 5

假设您的表格类似于下面的表格,您可以使用表格的集合和行的单元格集合将其转换为数组数组:

function tableToArray(table) {
  var result = []
  var rows = table.rows;
  var cells, t;

  // Iterate over rows
  for (var i=0, iLen=rows.length; i<iLen; i++) {
    cells = rows[i].cells;
    t = [];

    // Iterate over cells
    for (var j=0, jLen=cells.length; j<jLen; j++) {
      t.push(cells[j].textContent);
    }
    result.push(t);
  }
  return result; 
}
    
    document.write(JSON.stringify(tableToArray(document.getElementsByTagName('table')[0])));
Run Code Online (Sandbox Code Playgroud)
<table>
  <tr>
    <td>one<td>two<td>three
  <tr>
    <td>one<td>two<td>three
  <tr>
    <td>one<td>two<td>three
</table>
Run Code Online (Sandbox Code Playgroud)

或者,如果喜欢简洁的代码,请使用一些 ES5 优点:

function tableToArray(table) {
  var result  = [].reduce.call(table.rows, function (result, row) {
      result.push([].reduce.call(row.cells, function(res, cell) {
          res.push(cell.textContent);
          return res;
      }, []));
      return result;
  }, []);
  return result;
}
Run Code Online (Sandbox Code Playgroud)