在 html/javascript 中从 Object 创建 table
Creating table from Object in html/javascript
我已经在 html 中硬编码了 table,现在我想在 object 的帮助下以类似的结构动态生成 table。在我看过的大多数文章中,它显示以稍微不同的格式动态创建 table,将 object 键作为 header,但我想创建一个 table每个 object 值。例如 result[0] 应该是一个 table,result[1] 是另一个 table 和任何一个 key-value 例如。选项卡 A 为 header。我该怎么做?
我只想显示ID等于23的table
result = [{
"Plan ID": 0,
"ID": 24,
"[Plan name]": "Tab A",
"Emp Only": 133.90,
"Emp + Spouse/Partner": 161.30,
"Emp + Child(ren)": 53.30,
"Emp + Family": 186.20,
" max contrib. / Emp only": 3000,
" max contrib. / Emp + dependents": 6000,
"Emp ded. / Emp only": 6650,
"Emp ded. / Emp + dependents": 13300
}, {
"Plan ID": 0,
"ID": 23,
"[Plan name]": "Tab B",
"Emp Only": 33.90,
"Emp + Spouse/Partner": 161.1,
"Emp + Child(ren)": 55.30,
"Emp + Family": 180.8,
" max contrib. / Emp only": 3000,
" max contrib. / Emp + dependents": 6000,
"Emp ded. / Emp only": 660,
"Emp ded. / Emp + dependents": 5500
}]
<div class="table_container">
<table id="table2" class="checkboxdiv">
<tr>
<th>Tab B<input type="checkbox" id="2" name="table2" value="table2" onchange="myFunction(event)"></th>
</tr>
<tr>
<td>.90</td>
</tr>
<tr>
<td>1.1</td>
</tr>
<tr>
<td>.30</td>
</tr>
<tr>
<td>0.8</td>
</tr>
<tr>
<td>00</td>
</tr>
<tr>
<td>00</td>
</tr>
<tr>
<td>0</td>
</tr>
<tr>
<td>00</td>
</tr>
</table>
</div>
看看这个
使用过滤器和一些地图,我们可以一次性创建完整的HTML
我还删除了你的内联事件处理程序并委托给主容器
此外,我添加了货币并将单元格与数字对齐
result = [{ "Plan ID": 0, "ID": 23, "[Plan name]": "Tab A", "Emp Only": 133.90, "Emp + Spouse/Partner": 161.30, "Emp + Child(ren)": 53.30, "Emp + Family": 186.20, " max contrib. / Emp only": 3000, " max contrib. / Emp + dependents": 6000, "Emp ded. / Emp only": 6650, "Emp ded. / Emp + dependents": 13300 }, { "Plan ID": 0, "ID": 23, "[Plan name]": "Tab B", "Emp Only": 33.90, "Emp + Spouse/Partner": 161.1, "Emp + Child(ren)": 55.30, "Emp + Family": 180.8, " max contrib. / Emp only": 3000, " max contrib. / Emp + dependents": 6000, "Emp ded. / Emp only": 660, "Emp ded. / Emp + dependents": 5500 }];
const main = document.getElementById('main');
main.innerHTML = result.map((res,i) => {
const header = res["[Plan name]"]; // get the plan from the entry
const idx = i+1;
return `<div class="table_container">
<table id="table${idx}" class="checkboxdiv">
<tr>
<th>${header}<input type="checkbox" id="${idx}" name="table${idx}" value="table${idx}"> </th>
</tr>
${Object.entries(res)
.filter(([key,val]) => key.includes('Emp')) // filter the Emp
.map(([key,val]) => `<tr><td class="amt">$${val.toFixed(2)}</td></tr>`).join('')}
</table></div>`}).join('');
// replaces your inline event handler using delegation
main.addEventListener("click",function(e) {
const tgt = e.target;
if (tgt.type==="checkbox") console.log(tgt.id)
})
.amt {text-align:right; }
<div id="main">
</div>
这里也许更有用 - 显示密钥
result = [{ "Plan ID": 0, "ID": 23, "[Plan name]": "Tab A", "Emp Only": 133.90, "Emp + Spouse/Partner": 161.30, "Emp + Child(ren)": 53.30, "Emp + Family": 186.20, " max contrib. / Emp only": 3000, " max contrib. / Emp + dependents": 6000, "Emp ded. / Emp only": 6650, "Emp ded. / Emp + dependents": 13300 }, { "Plan ID": 0, "ID": 23, "[Plan name]": "Tab B", "Emp Only": 33.90, "Emp + Spouse/Partner": 161.1, "Emp + Child(ren)": 55.30, "Emp + Family": 180.8, " max contrib. / Emp only": 3000, " max contrib. / Emp + dependents": 6000, "Emp ded. / Emp only": 660, "Emp ded. / Emp + dependents": 5500 }];
const main = document.getElementById('main');
main.innerHTML = result.map((res,i) => {
const header = res["[Plan name]"]; // get the plan from the entry
const idx = i+1;
return `<div class="table_container">
<table id="table${idx}" class="checkboxdiv">
<tr>
<th>${header}<input type="checkbox" id="${idx}" name="table${idx}" value="table${idx}"> </th>
</tr>
${Object.entries(res)
.filter(([key,val]) => key.includes('Emp')) // filter the Emp
.map(([key,val]) => `<tr><td>${key}</td><td class="amt">$${val.toFixed(2)}</td></tr>`).join('')}
</table></div>`}).join('');
main.addEventListener("click",function(e) {
const tgt = e.target;
if (tgt.type==="checkbox") console.log(tgt.id)
})
.amt { text-align:right; }
<div id="main">
</div>
您可以使用模板文字构建 table 并将每个键值对映射到一行。
只需传递记录(数据)、table名称的键和原始数组中出现的索引。
将数字格式化为货币 ($
),只要它们验证为数字 (!isNaN
)。
您可以通过在父级 (body
) 上调用 insertAdjacentHTML
并传入 beforeend
.
来将 HTML 文本附加为节点
编辑: 我为每个 table 添加了一个标记 (INCLUDE_KEYS
) 到 show/hide 键列。它是可选的,目前设置为 false
.
const INCLUDE_KEYS = false; // Set to true to reveal keys
const createTableHTML = (data, key, index, includeKeys) => `
<div class="table-wrapper">
<table class="vertical-table">
<thead>
<tr>
<th ${includeKeys ? 'colspan="2"' : ''}>
${data[key]}
<input type="checkbox"
onchange="myfunction(this)"
value="table${index + 1}" /></th>
</tr>
</thead>
<tbody>
${Object.keys(data).filter(k => k !== key).map(key => `<tr>
${includeKeys ? `<th>${key}</th>` : ''}
<td>${!isNaN(data[key]) ? `$${data[key].toFixed(2)}` : data[key]}</td>
</tr>`).join('')}
</tbody>
</table>
</div>
`;
const result = [{
"Plan ID": 0,
"ID": 23,
"[Plan name]": "Tab A",
"Emp Only": 30.5,
"Emp + Spouse/Partner": 154.1,
"Emp + Child(ren)": 48.8,
"Emp + Family": 180.8,
" max contrib. / Emp only": "None",
" max contrib. / Emp + dependents": "None",
"Emp ded. / Emp only": 2750,
"Emp ded. / Emp + dependents": 5500,
"Emp OOP max / per person": 6850,
"Emp OOP max / entire famliy": 13700
}, {
"Plan ID": 0,
"ID": 23,
"[Plan name]": "Tab B",
"Emp Only": 30.5,
"Emp + Spouse/Partner": 154.1,
"Emp + Child(ren)": 48.8,
"Emp + Family": 180.8,
" max contrib. / Emp only": "None",
" max contrib. / Emp + dependents": "None",
"Emp ded. / Emp only": 2750,
"Emp ded. / Emp + dependents": 5500,
"Emp OOP max / per person": 6850,
"Emp OOP max / entire famliy": 1555
}];
result.forEach((obj, index) =>
document.body.insertAdjacentHTML('beforeend',
createTableHTML(obj, '[Plan name]', index, INCLUDE_KEYS)));
function myfunction(checkbox) {
console.log(checkbox.value);
}
.table-wrapper table {
border-collapse: collapse;
margin-bottom: 1em;
}
.table-wrapper table,
.table-wrapper table th,
.table-wrapper table td {
border: thin solid grey;
}
.table-wrapper table thead {
border-bottom: thick double grey;
}
.table-wrapper table th,
.table-wrapper table td {
padding: 0.25em;
}
.table-wrapper tbody td {
text-align: right;
}
考虑以下因素。
$(function() {
function myFunction(event) {
// Do the needful
}
var result = [{
"Plan ID": 0,
"ID": 23,
"[Plan name]": "Tab A",
"Emp Only": 30.5,
"Emp + Spouse/Partner": 154.1,
"Emp + Child(ren)": 48.8,
"Emp + Family": 180.8,
" max contrib. / Emp only": "None",
" max contrib. / Emp + dependents": "None",
"Emp ded. / Emp only": 2750,
"Emp ded. / Emp + dependents": 5500,
"Emp OOP max / per person": 6850,
"Emp OOP max / entire famliy": 13700
}, {
"Plan ID": 0,
"ID": 23,
"[Plan name]": "Tab B",
"Emp Only": 30.5,
"Emp + Spouse/Partner": 154.1,
"Emp + Child(ren)": 48.8,
"Emp + Family": 180.8,
" max contrib. / Emp only": "None",
" max contrib. / Emp + dependents": "None",
"Emp ded. / Emp only": 2750,
"Emp ded. / Emp + dependents": 5500,
"Emp OOP max / per person": 6850,
"Emp OOP max / entire famliy": 1555
}];
function makeTable(dataObj, target) {
target = (target != undefined ? $(target) : $(".table_container"));
var newTable = $("<table>", {
id: "table-" + dataObj.ID,
class: "checkboxdiv"
}).appendTo(target);
$("<tr>").appendTo(newTable);
$("<th>").appendTo($("tr", newTable));
$("tr > th", newTable).html(dataObj['[Plan name]']);
$("<input>", {
type: "checkbox",
id: dataObj.ID,
name: "table" + dataObj.ID,
value: "table" + dataObj.ID
}).click(function(event) {
myFunction(event);
}).appendTo($("tr > th", newTable));
var exclude = ["Plan ID", "ID", "[Plan name]"];
$.each(dataObj, function(key, val) {
if (exclude.indexOf(key) < 0) {
if (parseInt(val)) {
newTable.append("<tr><td>$" + parseFloat(val).toFixed(2) + "</td></tr>");
} else {
newTable.append("<tr><td>" + val + "</td></tr>");
}
}
});
}
$.each(result, function(i, items) {
makeTable(items);
});
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<div class="table_container">
<!-- Example Output
<table id="table1" class="checkboxdiv">
<tr>
<th>Tab A<input type="checkbox" id="1" name="table1" value="table1" onchange="myFunction(event)"> </th>
</tr>
<tr>
<td>3.90</td>
</tr>
<tr>
<td>1.30</td>
</tr>
<tr>
<td>.30</td>
</tr>
<tr>
<td>6.20</td>
</tr>
<tr>
<td>00</td>
</tr>
<tr>
<td>00</td>
</tr>
<tr>
<td>50</td>
</tr>
<tr>
<td>300</td>
</tr>
</table>
</div>
<div class="table_container">
<table id="table2" class="checkboxdiv">
<tr>
<th>Tab B<input type="checkbox" id="2" name="table2" value="table2" onchange="myFunction(event)"></th>
</tr>
<tr>
<td>.90</td>
</tr>
<tr>
<td>1.30</td>
</tr>
<tr>
<td>.30</td>
</tr>
<tr>
<td>6.20</td>
</tr>
<tr>
<td>00</td>
</tr>
<tr>
<td>00</td>
</tr>
<tr>
<td>0</td>
</tr>
<tr>
<td>300</td>
</tr>
</table>
-->
</div>
现已测试,这可能是您要找的吗?
const result = [{
"Plan ID": 0,
"ID": 23,
"[Plan name]": "Tab A",
"Emp Only": 133.90,
"Emp + Spouse/Partner": 161.30,
"Emp + Child(ren)": 53.30,
"Emp + Family": 186.20,
" max contrib. / Emp only": 3000,
" max contrib. / Emp + dependents": 6000,
"Emp ded. / Emp only": 6650,
"Emp ded. / Emp + dependents": 13300
},
{
"Plan ID": 0,
"ID": 23,
"[Plan name]": "Tab B",
"Emp Only": 33.90,
"Emp + Spouse/Partner": 161.1,
"Emp + Child(ren)": 55.30,
"Emp + Family": 180.8,
" max contrib. / Emp only": 3000,
" max contrib. / Emp + dependents": 6000,
"Emp ded. / Emp only": 660,
"Emp ded. / Emp + dependents": 5500
}
];
const el = document.getElementById("table_container");
let tables = "";
result.forEach(r => {
tables += `
<table class="checkboxdiv">
<theader>
<th>Key</th>
<th>Value</th>
</theader>
`;
for (let key in r) {
tables += `
<tr>
<td>${key}</td>
<td>${r[key]}</td>
</tr>
`;
}
tables += `</table>`;
});
el.innerHTML = tables;
<div id="table_container"></div>
我已经在 html 中硬编码了 table,现在我想在 object 的帮助下以类似的结构动态生成 table。在我看过的大多数文章中,它显示以稍微不同的格式动态创建 table,将 object 键作为 header,但我想创建一个 table每个 object 值。例如 result[0] 应该是一个 table,result[1] 是另一个 table 和任何一个 key-value 例如。选项卡 A 为 header。我该怎么做?
我只想显示ID等于23的table
result = [{
"Plan ID": 0,
"ID": 24,
"[Plan name]": "Tab A",
"Emp Only": 133.90,
"Emp + Spouse/Partner": 161.30,
"Emp + Child(ren)": 53.30,
"Emp + Family": 186.20,
" max contrib. / Emp only": 3000,
" max contrib. / Emp + dependents": 6000,
"Emp ded. / Emp only": 6650,
"Emp ded. / Emp + dependents": 13300
}, {
"Plan ID": 0,
"ID": 23,
"[Plan name]": "Tab B",
"Emp Only": 33.90,
"Emp + Spouse/Partner": 161.1,
"Emp + Child(ren)": 55.30,
"Emp + Family": 180.8,
" max contrib. / Emp only": 3000,
" max contrib. / Emp + dependents": 6000,
"Emp ded. / Emp only": 660,
"Emp ded. / Emp + dependents": 5500
}]
<div class="table_container">
<table id="table2" class="checkboxdiv">
<tr>
<th>Tab B<input type="checkbox" id="2" name="table2" value="table2" onchange="myFunction(event)"></th>
</tr>
<tr>
<td>.90</td>
</tr>
<tr>
<td>1.1</td>
</tr>
<tr>
<td>.30</td>
</tr>
<tr>
<td>0.8</td>
</tr>
<tr>
<td>00</td>
</tr>
<tr>
<td>00</td>
</tr>
<tr>
<td>0</td>
</tr>
<tr>
<td>00</td>
</tr>
</table>
</div>
看看这个
使用过滤器和一些地图,我们可以一次性创建完整的HTML
我还删除了你的内联事件处理程序并委托给主容器
此外,我添加了货币并将单元格与数字对齐
result = [{ "Plan ID": 0, "ID": 23, "[Plan name]": "Tab A", "Emp Only": 133.90, "Emp + Spouse/Partner": 161.30, "Emp + Child(ren)": 53.30, "Emp + Family": 186.20, " max contrib. / Emp only": 3000, " max contrib. / Emp + dependents": 6000, "Emp ded. / Emp only": 6650, "Emp ded. / Emp + dependents": 13300 }, { "Plan ID": 0, "ID": 23, "[Plan name]": "Tab B", "Emp Only": 33.90, "Emp + Spouse/Partner": 161.1, "Emp + Child(ren)": 55.30, "Emp + Family": 180.8, " max contrib. / Emp only": 3000, " max contrib. / Emp + dependents": 6000, "Emp ded. / Emp only": 660, "Emp ded. / Emp + dependents": 5500 }];
const main = document.getElementById('main');
main.innerHTML = result.map((res,i) => {
const header = res["[Plan name]"]; // get the plan from the entry
const idx = i+1;
return `<div class="table_container">
<table id="table${idx}" class="checkboxdiv">
<tr>
<th>${header}<input type="checkbox" id="${idx}" name="table${idx}" value="table${idx}"> </th>
</tr>
${Object.entries(res)
.filter(([key,val]) => key.includes('Emp')) // filter the Emp
.map(([key,val]) => `<tr><td class="amt">$${val.toFixed(2)}</td></tr>`).join('')}
</table></div>`}).join('');
// replaces your inline event handler using delegation
main.addEventListener("click",function(e) {
const tgt = e.target;
if (tgt.type==="checkbox") console.log(tgt.id)
})
.amt {text-align:right; }
<div id="main">
</div>
这里也许更有用 - 显示密钥
result = [{ "Plan ID": 0, "ID": 23, "[Plan name]": "Tab A", "Emp Only": 133.90, "Emp + Spouse/Partner": 161.30, "Emp + Child(ren)": 53.30, "Emp + Family": 186.20, " max contrib. / Emp only": 3000, " max contrib. / Emp + dependents": 6000, "Emp ded. / Emp only": 6650, "Emp ded. / Emp + dependents": 13300 }, { "Plan ID": 0, "ID": 23, "[Plan name]": "Tab B", "Emp Only": 33.90, "Emp + Spouse/Partner": 161.1, "Emp + Child(ren)": 55.30, "Emp + Family": 180.8, " max contrib. / Emp only": 3000, " max contrib. / Emp + dependents": 6000, "Emp ded. / Emp only": 660, "Emp ded. / Emp + dependents": 5500 }];
const main = document.getElementById('main');
main.innerHTML = result.map((res,i) => {
const header = res["[Plan name]"]; // get the plan from the entry
const idx = i+1;
return `<div class="table_container">
<table id="table${idx}" class="checkboxdiv">
<tr>
<th>${header}<input type="checkbox" id="${idx}" name="table${idx}" value="table${idx}"> </th>
</tr>
${Object.entries(res)
.filter(([key,val]) => key.includes('Emp')) // filter the Emp
.map(([key,val]) => `<tr><td>${key}</td><td class="amt">$${val.toFixed(2)}</td></tr>`).join('')}
</table></div>`}).join('');
main.addEventListener("click",function(e) {
const tgt = e.target;
if (tgt.type==="checkbox") console.log(tgt.id)
})
.amt { text-align:right; }
<div id="main">
</div>
您可以使用模板文字构建 table 并将每个键值对映射到一行。
只需传递记录(数据)、table名称的键和原始数组中出现的索引。
将数字格式化为货币 ($
),只要它们验证为数字 (!isNaN
)。
您可以通过在父级 (body
) 上调用 insertAdjacentHTML
并传入 beforeend
.
编辑: 我为每个 table 添加了一个标记 (INCLUDE_KEYS
) 到 show/hide 键列。它是可选的,目前设置为 false
.
const INCLUDE_KEYS = false; // Set to true to reveal keys
const createTableHTML = (data, key, index, includeKeys) => `
<div class="table-wrapper">
<table class="vertical-table">
<thead>
<tr>
<th ${includeKeys ? 'colspan="2"' : ''}>
${data[key]}
<input type="checkbox"
onchange="myfunction(this)"
value="table${index + 1}" /></th>
</tr>
</thead>
<tbody>
${Object.keys(data).filter(k => k !== key).map(key => `<tr>
${includeKeys ? `<th>${key}</th>` : ''}
<td>${!isNaN(data[key]) ? `$${data[key].toFixed(2)}` : data[key]}</td>
</tr>`).join('')}
</tbody>
</table>
</div>
`;
const result = [{
"Plan ID": 0,
"ID": 23,
"[Plan name]": "Tab A",
"Emp Only": 30.5,
"Emp + Spouse/Partner": 154.1,
"Emp + Child(ren)": 48.8,
"Emp + Family": 180.8,
" max contrib. / Emp only": "None",
" max contrib. / Emp + dependents": "None",
"Emp ded. / Emp only": 2750,
"Emp ded. / Emp + dependents": 5500,
"Emp OOP max / per person": 6850,
"Emp OOP max / entire famliy": 13700
}, {
"Plan ID": 0,
"ID": 23,
"[Plan name]": "Tab B",
"Emp Only": 30.5,
"Emp + Spouse/Partner": 154.1,
"Emp + Child(ren)": 48.8,
"Emp + Family": 180.8,
" max contrib. / Emp only": "None",
" max contrib. / Emp + dependents": "None",
"Emp ded. / Emp only": 2750,
"Emp ded. / Emp + dependents": 5500,
"Emp OOP max / per person": 6850,
"Emp OOP max / entire famliy": 1555
}];
result.forEach((obj, index) =>
document.body.insertAdjacentHTML('beforeend',
createTableHTML(obj, '[Plan name]', index, INCLUDE_KEYS)));
function myfunction(checkbox) {
console.log(checkbox.value);
}
.table-wrapper table {
border-collapse: collapse;
margin-bottom: 1em;
}
.table-wrapper table,
.table-wrapper table th,
.table-wrapper table td {
border: thin solid grey;
}
.table-wrapper table thead {
border-bottom: thick double grey;
}
.table-wrapper table th,
.table-wrapper table td {
padding: 0.25em;
}
.table-wrapper tbody td {
text-align: right;
}
考虑以下因素。
$(function() {
function myFunction(event) {
// Do the needful
}
var result = [{
"Plan ID": 0,
"ID": 23,
"[Plan name]": "Tab A",
"Emp Only": 30.5,
"Emp + Spouse/Partner": 154.1,
"Emp + Child(ren)": 48.8,
"Emp + Family": 180.8,
" max contrib. / Emp only": "None",
" max contrib. / Emp + dependents": "None",
"Emp ded. / Emp only": 2750,
"Emp ded. / Emp + dependents": 5500,
"Emp OOP max / per person": 6850,
"Emp OOP max / entire famliy": 13700
}, {
"Plan ID": 0,
"ID": 23,
"[Plan name]": "Tab B",
"Emp Only": 30.5,
"Emp + Spouse/Partner": 154.1,
"Emp + Child(ren)": 48.8,
"Emp + Family": 180.8,
" max contrib. / Emp only": "None",
" max contrib. / Emp + dependents": "None",
"Emp ded. / Emp only": 2750,
"Emp ded. / Emp + dependents": 5500,
"Emp OOP max / per person": 6850,
"Emp OOP max / entire famliy": 1555
}];
function makeTable(dataObj, target) {
target = (target != undefined ? $(target) : $(".table_container"));
var newTable = $("<table>", {
id: "table-" + dataObj.ID,
class: "checkboxdiv"
}).appendTo(target);
$("<tr>").appendTo(newTable);
$("<th>").appendTo($("tr", newTable));
$("tr > th", newTable).html(dataObj['[Plan name]']);
$("<input>", {
type: "checkbox",
id: dataObj.ID,
name: "table" + dataObj.ID,
value: "table" + dataObj.ID
}).click(function(event) {
myFunction(event);
}).appendTo($("tr > th", newTable));
var exclude = ["Plan ID", "ID", "[Plan name]"];
$.each(dataObj, function(key, val) {
if (exclude.indexOf(key) < 0) {
if (parseInt(val)) {
newTable.append("<tr><td>$" + parseFloat(val).toFixed(2) + "</td></tr>");
} else {
newTable.append("<tr><td>" + val + "</td></tr>");
}
}
});
}
$.each(result, function(i, items) {
makeTable(items);
});
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<div class="table_container">
<!-- Example Output
<table id="table1" class="checkboxdiv">
<tr>
<th>Tab A<input type="checkbox" id="1" name="table1" value="table1" onchange="myFunction(event)"> </th>
</tr>
<tr>
<td>3.90</td>
</tr>
<tr>
<td>1.30</td>
</tr>
<tr>
<td>.30</td>
</tr>
<tr>
<td>6.20</td>
</tr>
<tr>
<td>00</td>
</tr>
<tr>
<td>00</td>
</tr>
<tr>
<td>50</td>
</tr>
<tr>
<td>300</td>
</tr>
</table>
</div>
<div class="table_container">
<table id="table2" class="checkboxdiv">
<tr>
<th>Tab B<input type="checkbox" id="2" name="table2" value="table2" onchange="myFunction(event)"></th>
</tr>
<tr>
<td>.90</td>
</tr>
<tr>
<td>1.30</td>
</tr>
<tr>
<td>.30</td>
</tr>
<tr>
<td>6.20</td>
</tr>
<tr>
<td>00</td>
</tr>
<tr>
<td>00</td>
</tr>
<tr>
<td>0</td>
</tr>
<tr>
<td>300</td>
</tr>
</table>
-->
</div>
现已测试,这可能是您要找的吗?
const result = [{
"Plan ID": 0,
"ID": 23,
"[Plan name]": "Tab A",
"Emp Only": 133.90,
"Emp + Spouse/Partner": 161.30,
"Emp + Child(ren)": 53.30,
"Emp + Family": 186.20,
" max contrib. / Emp only": 3000,
" max contrib. / Emp + dependents": 6000,
"Emp ded. / Emp only": 6650,
"Emp ded. / Emp + dependents": 13300
},
{
"Plan ID": 0,
"ID": 23,
"[Plan name]": "Tab B",
"Emp Only": 33.90,
"Emp + Spouse/Partner": 161.1,
"Emp + Child(ren)": 55.30,
"Emp + Family": 180.8,
" max contrib. / Emp only": 3000,
" max contrib. / Emp + dependents": 6000,
"Emp ded. / Emp only": 660,
"Emp ded. / Emp + dependents": 5500
}
];
const el = document.getElementById("table_container");
let tables = "";
result.forEach(r => {
tables += `
<table class="checkboxdiv">
<theader>
<th>Key</th>
<th>Value</th>
</theader>
`;
for (let key in r) {
tables += `
<tr>
<td>${key}</td>
<td>${r[key]}</td>
</tr>
`;
}
tables += `</table>`;
});
el.innerHTML = tables;
<div id="table_container"></div>