如何从数组制作表格

时间:2020-12-21 13:20:16

标签: javascript arrays json

我有一个包含这样数据的变量

[
    [
        {"_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 循环,但在所有列上都得到重复的值。 建议的解决方案对我不起作用,因为数组的排列方式不同。

1 个答案:

答案 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; }

相关问题