对一个对象关键点进行排序,使其与其他对象关键点相匹配



我有以下对象:

{
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);

最新更新