获取嵌套数组项以附加到 HTML 表中的新列

Posted

技术标签:

【中文标题】获取嵌套数组项以附加到 HTML 表中的新列【英文标题】:Get nested array items to append to new column in HTML Table 【发布时间】:2019-02-18 19:06:48 【问题描述】:

我正在尝试将二维数组中的项目附加到表中,但所有内容都出现在左侧的一列中。如何分离 tableDataArr[1] 以开始加载到下一列?

javascript

let names = []; //populated dynamically
let language = []; //populated dynamically 
let tableDataArr = [names, language];

function renderData() 
  for (let i = 0; i < tableDataArr.length; i++) 
    tableDataArr[i].forEach(j => 
      let newRow = document.createElement("tr");
      newRow.className = "row";
      newRow.innerhtml = `<td class='cell'>$j</td>`;
      leftTable.appendChild(newRow);
    );
  

HTML

<div class='left-tbl-wrap'>
  <table class='table' id='left-table'>
    <tr class='row'>
      <th class='th'>Name</th>
      <th class='th'>Language</th>
      <th class='th'>Latest tag</th>
      <th class='th'><span class='delete'></span></th>
    </tr>
  </table>
</div>

【问题讨论】:

【参考方案1】:

应该是这样的

function renderData() 
    for (let i = 0; i < tableDataArr.length; i++) 
      let newRow = document.createElement("tr");
      tableDataArr[i].forEach(j=> 
        newRow.className = "row";
        newRow.innerHTML = `<td class='cell'>$j</td>`;
        leftTable.appendChild(newRow);
      );
    

因为您可能不需要在第二个循环中迭代表行。如果您愿意,它将添加只有一个表格数据的每一行。

【讨论】:

嗯,这有助于将语言数组放入下一列,但它仅适用于名称和语言的最后一项。我怎样才能以这种方式列出数组中的所有项目?感谢您的帮助【参考方案2】:

对于每次迭代,将名称和语言添加到同一行,然后将该行插入到表中。

我在名称和语言数组中添加了一些元素来演示

let names = ["name1", "name2", "name3"]; //populated dynamically
let language = ["language1", "language2", "language3"]; //populated dynamically 
let tableDataArr = [names, language];
const leftTable = document.querySelector("#left-table");

function renderData() 
  tableDataArr[0].forEach((j, i) => 
    let newRow = document.createElement("tr");
    newRow.className = "row";
    newRow.innerHTML = `<td class='cell'>$j</td><td class='cell'>$tableDataArr[1][i]</td>`;
    leftTable.appendChild(newRow);
  );


renderData();
<div class='left-tbl-wrap'>
  <table class='table' id='left-table'>
    <tr class='row'>
      <th class='th'>Name</th>
      <th class='th'>Language</th>
      <th class='th'>Latest tag</th>
      <th class='th'><span class='delete'></span></th>
    </tr>
  </table>
</div>

【讨论】:

非常感谢!这正是我想要达到的目标。另外,请问您为什么将 getElementByID 更改为 querySelector? 我没看到你在哪里选择表格,我只是更习惯使用查询选择器而已 嘿,克里斯,您是否介意看一下我的最新帖子(关于此表的另一个问题),因为您帮我解决了这个问题?干杯!! ***.com/questions/52359079/… 看来您已经有了 miozzz 的不错答案,我会建议相同的解决方案。您也可以使用 async/await,但由于您有一个 fetch 循环,因此使用 Promise.all 具有更好的性能。他确实犯了一个小错误,只需将 Promise.all(ps) 更改为 Promise.all(psArr) 就可以了。 谢谢克里斯! Promise.all 是要走的路。

以上是关于获取嵌套数组项以附加到 HTML 表中的新列的主要内容,如果未能解决你的问题,请参考以下文章

如何按 > 日期对一系列日期求和并将它们附加到熊猫新数据框中的新列?

将向量作为单独的新列附加到 data.table,向量回收单个值

将数据框中的值列表附加到新列[重复]

将嵌套结构中的数组附加到另​​一个嵌套结构中的另一个数组

Apache Spark 如何将新列从列表/数组附加到 Spark 数据帧

为啥这个 html 附加结构与数组结构不同