值得一看
广告
彩虹云商城
广告

热门广告位

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

DeepSeek

DeepSeek

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

DeepSeek7087

查看详情
DeepSeek

注意事项:

  • 上述代码只是一个简单的示例,实际应用中可能需要根据具体需求进行修改。例如,可以添加 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

大家都在看:

利用CSS相邻兄弟选择器实现元素悬停显示效果
CSS布局技巧:解决链接元素样式继承失效及居中布局问题
CSS SVG背景覆盖内容:定位与层叠上下文深度解析
解决CSS中SVG背景覆盖内容的问题:理解定位与层叠上下文
CSS实现悬停触发:利用相邻兄弟选择器和Flexbox控制元素显示
温馨提示: 本文最后更新于2025-09-13 22:39:25,某些文章具有时效性,若有错误或已失效,请在下方留言或联系在线客服
文章版权声明 1 本网站名称: 创客网
2 本站永久网址:https://new.ie310.com
1 本文采用非商业性使用-相同方式共享 4.0 国际许可协议[CC BY-NC-SA]进行授权
2 本站所有内容仅供参考,分享出来是为了可以给大家提供新的思路。
3 互联网转载资源会有一些其他联系方式,请大家不要盲目相信,被骗本站概不负责!
4 本网站只做项目揭秘,无法一对一教学指导,每篇文章内都含项目全套的教程讲解,请仔细阅读。
5 本站分享的所有平台仅供展示,本站不对平台真实性负责,站长建议大家自己根据项目关键词自己选择平台。
6 因为文章发布时间和您阅读文章时间存在时间差,所以有些项目红利期可能已经过了,能不能赚钱需要自己判断。
7 本网站仅做资源分享,不做任何收益保障,创业公司上收费几百上千的项目我免费分享出来的,希望大家可以认真学习。
8 本站所有资料均来自互联网公开分享,并不代表本站立场,如不慎侵犯到您的版权利益,请联系79283999@qq.com删除。

本站资料仅供学习交流使用请勿商业运营,严禁从事违法,侵权等任何非法活动,否则后果自负!
THE END
喜欢就支持一下吧
点赞6赞赏 分享
评论 抢沙发

请登录后发表评论

    暂无评论内容