使用 JavaScript 合并具有相同 ID 的对象并在 HTML 表格中显示

41次阅读

使用 JavaScript 合并具有相同 ID 的对象并在 HTML 表格中显示

本文档将指导你如何使用 JavaScript 将具有相同 reference 属性的对象合并成一个对象,并将结果以特定格式展示在 HTML 表格中。我们将使用 reduce() 方法对原始数组进行处理,并最终生成符合要求的表格数据结构,以便在前端页面进行渲染。

数据合并

首先,我们需要将具有相同 reference 值的对象合并。可以使用 reduce() 方法来实现这个功能。

let arr = [{   reference: "A2",   sendTo: "USA",   item: "sticker",   sku: 0921380,   quantity: 1 }, {   reference: "A2",   sendTo: "USA",   item: "toy",   sku: 0921381,   quantity: 2 }, {   reference: "A2",   item: "pencil",   sku: 0921382,   quantity: 2 },  {   reference: "A3",   item: "sticker",   sendTo: "USA",   sku: 0921380,   quantity: 2 }];  let result = arr.reduce((previousValue, currentValue) => {     let exists = previousValue.find(i => i.reference === currentValue.reference);     if (exists) {         exists.item += ', ' + currentValue.item;         exists.sku += ', ' + currentValue.sku;         exists.quantity += ', ' + currentValue.quantity;     } else {         previousValue.push(currentValue);     }     return previousValue; }, []);  console.log(result);

这段代码的核心是 reduce 函数。它遍历原始数组 arr,并根据 reference 属性将具有相同 reference 值的对象合并。如果 previousValue 中已经存在具有相同 reference 值的对象,则将当前对象的 item、sku 和 quantity 属性追加到已存在对象的对应属性中;否则,将当前对象直接添加到 previousValue 中。

生成 HTML 表格

接下来,我们需要将合并后的数据转换成 HTML 表格。这里提供一个通用的 JavaScript 函数,可以将数据渲染成表格字符串:

立即学习Java免费学习笔记(深入)”;

function generateTable(data) {   let tableHTML = '<table border="1">'; // 简单起见,使用 border="1"    // 添加表头   if (data.length > 0) {     tableHTML += '<thead><tr>';     for (let key in data[0]) {       tableHTML += '<th>' + key + '</th>';     }     tableHTML += '</tr></thead>';   }    // 添加表体   tableHTML += '<tbody>';   data.forEach(item => {     tableHTML += '<tr>';     for (let key in item) {       tableHTML += '<td>' + item[key] + '</td>';     }     tableHTML += '</tr>';   });   tableHTML += '</tbody></table>';    return tableHTML; }  // 使用示例 let tableHTML = generateTable(result); document.body.innerHTML = tableHTML; // 将表格添加到页面中

这段代码首先定义了一个 generateTable 函数,它接受一个数据数组作为参数。函数首先创建一个 <table> 元素,然后根据数据的键生成表头 <thead>,最后遍历数据数组,生成表体 <tbody>。

使用 JavaScript 合并具有相同 ID 的对象并在 HTML 表格中显示

DeepSeek

幻方量化公司旗下的开源大模型平台

使用 JavaScript 合并具有相同 ID 的对象并在 HTML 表格中显示7087

查看详情 使用 JavaScript 合并具有相同 ID 的对象并在 HTML 表格中显示

注意事项:

  • 上述代码只是一个简单的示例,实际应用中可能需要根据具体需求进行修改。例如,可以添加 CSS 样式来美化表格,或者使用更复杂的 JavaScript 库来生成表格。
  • 对于大型数据集,直接操作 DOM 可能会影响性能。可以考虑使用虚拟 DOM 或其他优化技术。
  • 代码中使用了 border=”1″ 属性来显示表格边框,实际应用中建议使用 CSS 来控制表格样式。

根据需求定制表格结构

根据题目要求,我们需要生成具有特定结构的表格,即当 reference 值相同时,后续行的 reference 和 sendTo 单元格为空。为了实现这个需求,我们需要对 generateTable 函数进行修改。

function generateCustomTable(data) {   let tableHTML = '<table border="1">';   tableHTML += '<thead><tr><th>reference</th><th>sendTo</th><th>item</th><th>sku</th><th>quantity</th></tr></thead>';   tableHTML += '<tbody>';    let lastReference = null;    data.forEach(item => {     tableHTML += '<tr>';     if (item.reference !== lastReference) {       tableHTML += '<td>' + item.reference + '</td>';       tableHTML += '<td>' + (item.sendTo || '') + '</td>'; //sendTo 可能不存在       lastReference = item.reference;     } else {       tableHTML += '<td></td>';       tableHTML += '<td></td>';     }     tableHTML += '<td>' + item.item + '</td>';     tableHTML += '<td>' + item.sku + '</td>';     tableHTML += '<td>' + item.quantity + '</td>';     tableHTML += '</tr>';   });    tableHTML += '</tbody></table>';   return tableHTML; }  let customTableHTML = generateCustomTable(result); document.body.innerHTML = customTableHTML;

这段代码的关键在于使用 lastReference 变量来记录上一个 reference 值。如果当前对象的 reference 值与 lastReference 相同,则将 reference 和 sendTo 单元格设置为空;否则,正常显示 reference 和 sendTo 的值,并更新 lastReference。

总结

本文档介绍了如何使用 JavaScript 将具有相同 reference 属性的对象合并,并将结果以特定格式展示在 HTML 表格中。我们使用了 reduce() 方法来合并数据,并编写了自定义的 generateTable 函数来生成 HTML 表格。通过修改 generateTable 函数,我们可以灵活地定制表格的结构,以满足不同的需求。在实际应用中,可以根据具体情况对代码进行优化和扩展,例如添加 CSS 样式、使用虚拟 DOM 等。

css javascript java html 前端 red JavaScript css html 字符串 数据结构 对象 dom border table tbody

text=ZqhQzanResources