我有以下对象:
{
name: 'Nome',
key: 'Chave',
created_by: 'Criado Por',
}
和以下阵列:
[
{key: 'TEST1', name: 'Test 1', created_by: 'Guy'},
{key: 'TEST2', name: 'Test 2', created_by: 'Guy'}
]
如何对数组中的每个对象键进行排序以匹配第一个对象键?
期望结果:
[
{name: 'Test 1', key: 'TEST1', created_by: 'Guy'},
{name: 'Test 2', key: 'TEST2', created_by: 'Guy'}
]
根据注释,您需要一些表渲染,并且需要一些表列的顺序。包括一些列标题的简单翻译。
const data = [...];
const headers = {
name: 'Nome',
key: 'Chave',
created_by: 'Criado Por'
}
for (var hk in headers) {
// headers[hk] will contain your translated header
}
for (var r in data) {
// start your table-row here <tr>
for (var hk in headers) {
// data[r][hk] will contain the data of the column you requested
}
// end your table-row here </tr>
}
我把模板工作交给你。
如果您需要根据值创建一个表,请按所需顺序维护一个包含键的数组。
像这样,
const order = ['name', 'key', 'created_by'];
然后,在创建表的同时,在上面的数组上循环并访问您的数据。像这样的东西。
order.forEach(key => createCell(dataItem[key]))
createCell
函数用于生成<td>
元素,并将它们添加到您的html 中
您可以使用两个循环,一个循环迭代表行,另一个循环循环迭代表列。
const headers = {
name: 'Nome',
key: 'Chave',
created_by: 'Criado Por',
};
const rows = [
{key: 'TEST1', name: 'Test 1', created_by: 'Guy'},
{key: 'TEST2', name: 'Test 2', created_by: 'Guy'}
];
let output = '';
for(const item of rows) {
output += '<tr>';
for(const colName of Object.keys(headers)) {
output += `<td>${item[colName]}</td>`;
}
output += '</tr>';
}
console.log(output);