实现一个类似 console.table 的效果。
输入示例
[{name: "hdl",age: 1,city: "wh",},{name: "hdljshfjlhsf",age: 177,city: "whsh",},{name: "hdljsh",age: 1778,city: "sjfh skj",},
];
输出示例:
左对齐
name age city
hdl 1 wh
hdljshfjlhsf 177 whsh
hdljsh 1778 sjfh skj
代码实现:
const myTable = (arr) => {let headers = [];const strLengthMap = {};arr.forEach((obj) => {headers = headers.concat(Object.keys(obj));Object.keys(obj).forEach((key) => {const valLen = String(obj[key] ?? "").length;strLengthMap[key] = Math.max(strLengthMap[key], valLen) || 0;});});headers = new Set(headers);let headerStr = "";headers.forEach((i) => {headerStr =headerStr +i +" " +Array(strLengthMap[i] - i.length).fill(" ").join("");});console.log(headerStr);arr.forEach((record) => {let recordStr = "";headers.forEach((i) => {const valStr = String(record[i] ?? "");recordStr =recordStr +valStr +" " +Array(strLengthMap[i] - valStr.length).fill(" ").join("");});console.log(recordStr);});
};