【发布时间】:2021-03-13 14:09:42
【问题描述】:
【问题讨论】:
-
如果没有现成的解决方案,你总是可以走硬路,自己建表 ascii-art(严格来说是 unicode-art)。不过,这有点工作。也许存在一个包,例如console-table-printer(不是说好,只是我找到的第一个相关包)
标签: javascript node.js command line
【问题讨论】:
标签: javascript node.js command line
【讨论】:
感谢 Dheemanth Bhat 的惊人创意,此解决方案基于此:
/**
* @param {object} data
* @see https://stackoverflow.com/questions/66614444/multiline-console-tablea-aaa-naaa-b-bbb-nbbb-for-node
*/
export function consoleTableNewline(data) {
var tmp = [];
for (var i in data) {
var val = data[i];
var parts = val.split('\n');
var maxLen = parts.reduce((acc, cur) => Math.max(cur.length, acc), 0);
parts = parts.map(x=>x.padEnd(maxLen));
for (var j=0; j<parts.length; j++) {
var part = parts[j];
var key = i;
var obj = {};
if (j == 0) {
obj.key = key;
}
obj.val = part;
tmp.push(obj);
}
}
console.table(tmp);
}
它负责创建漂亮的输出(所有行的长度完全相同,否则看起来会高度失真)。
【讨论】:
你可以试试这个方法。
对象数组。
let a = {firstName:"Jane", lastName:"Smith"};
let b = {firstName:"John", lastName:"Smith"};
let c = {firstName:"Emily", lastName:"Smith"};
console.table([a, b, c]);
属性为对象的对象
var family = {};
family.a = {firstName:"Jane", lastName:"Smith"};
family.b = {firstName:"John", lastName:"Smith"};
family.c = {firstName:"Emily", lastName:"Smith"};
console.table(family);
【讨论】: