
本文档将指导你如何使用 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 表格。这里提供一个通用的 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>。
注意事项:
根据题目要求,我们需要生成具有特定结构的表格,即当 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 等。
以上就是使用 JavaScript 合并具有相同 ID 的对象并在 HTML 表格中显示的详细内容,更多请关注php中文网其它相关文章!
HTML怎么学习?HTML怎么入门?HTML在哪学?HTML怎么学才快?不用担心,这里为大家提供了HTML速学教程(入门课程),有需要的小伙伴保存下载就能学习啦!
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号