
本文档将指导你如何使用 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 = '| ' + key + ' | '; } tableHTML += '
|---|
| ' + item[key] + ' | '; } tableHTML += '
这段代码首先定义了一个 generateTable 函数,它接受一个数据数组作为参数。函数首先创建一个
| reference | sendTo | item | sku | quantity | ||
|---|---|---|---|---|---|---|
| ' + item.reference + ' | '; tableHTML += '' + (item.sendTo || '') + ' | '; //sendTo 可能不存在 lastReference = item.reference; } else { tableHTML += ''; tableHTML += ' | '; } tableHTML += ' | ' + item.item + ' | '; tableHTML += '' + item.sku + ' | '; tableHTML += '' + item.quantity + ' | '; tableHTML += '
这段代码的关键在于使用 lastReference 变量来记录上一个 reference 值。如果当前对象的 reference 值与 lastReference 相同,则将 reference 和 sendTo 单元格设置为空;否则,正常显示 reference 和 sendTo 的值,并更新 lastReference。
总结
本文档介绍了如何使用 JavaScript 将具有相同 reference 属性的对象合并,并将结果以特定格式展示在 HTML 表格中。我们使用了 reduce() 方法来合并数据,并编写了自定义的 generateTable 函数来生成 HTML 表格。通过修改 generateTable 函数,我们可以灵活地定制表格的结构,以满足不同的需求。在实际应用中,可以根据具体情况对代码进行优化和扩展,例如添加 CSS 样式、使用虚拟 DOM 等。











