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

使用 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

上一篇
下一篇