我有一个包含这样数据的变量
[
[
{"_hex":"0x00"},
{"_hex":"0x00"},
{"_hex":"0x00"}
],
[
{"_hex":"0x5fd77d24"},
{"_hex":"0x5fd77d2d"},
{"_hex":"0x5fd7a39a"}
],
[
{"_hex":"0x05f5e100"},
{"_hex":"0x05f5e100"},
{"_hex":"0x05f5e100"}
],
[
{"_hex":"0x00"},
{"_hex":"0x00"},
{"_hex":"0x00"}
],
[
false,
false,
false
]
]
我想在这样的表格中显示这些数据
id value quantity date vote
3 12132 13434 1564310899 false
2 89183 12342 1564311902 false
2 78172 54321 1564313122 false
我该怎么做?
我想过使用 foreach 循环,但它会遍历每一行。
注意:(我也会将十六进制值转换为十进制)
编辑:
我曾尝试使用 for 循环,但在所有列上都得到重复的值。
建议的解决方案对我不起作用,因为数组的排列方式不同。
答案 0 :(得分:0)
首先您需要计算每个值的宽度,以便每列的大小相同。
完成后,您可以简单地将数据映射到行;由空格或任何其他字符分隔。
const data = [
[ 'id', 'value', 'quantity', 'date', 'vote' ],
[ 3, 12132, 13434, 1564310899, false ],
[ 2, 89183, 12342, 1564311902, false ],
[ 2, 78172, 54321, 1564313122, false ]
];
const printTable = (data, delimiter) => {
const widths = data[0].map((col, index) =>
Math.max(...data.map(row => `${row[index]}`.length)));
return data.map(row =>
row.map((col, index) => `${col}`.padEnd(widths[index]))
.join(delimiter))
.join('\n');
};
console.log(printTable(data, ' | '));
.as-console-wrapper { top: 0; max-height: 100% !important; }