私は同じ問題を抱えていて、以下のコードを書きました。console.table ほど機能が充実しておらず、レコードの配列のみを受け入れ、列のリストを取りません。出力もそれほど良くありませんが、私には十分でした。例:
$ console_table([{who:"World",message:"Hello"}
,{who:"My wife",message:"Good Morning!"}])
|who |message |
|World |Hello |
|My wife|Good Morning!|
そしてその背後にあるコード:
// Will be available in the latest Chrome, then I can delete this
function console_table(xs)
{
if (xs.length === 0)
console.log("No data");
else
{
var widths = [];
var cells = [];
for (var i = 0; i <= xs.length; i++)
cells.push([]);
for (var s in xs[0])
{
var len = s.length;
cells[0].push(s);
for (var i = 0; i < xs.length; i++)
{
var ss = "" + xs[i][s];
len = Math.max(len, ss.length);
cells[i+1].push(ss);
}
widths.push(len);
}
var s = "";
for (var x = 0; x < cells.length; x++)
{
for (var y = 0; y < widths.length; y++)
s += "|" + pad(widths[y], cells[x][y]);
s += "|\n";
}
console.log(s);
}
}
function pad(n,s)
{
var res = s;
for (var i = s.length; i < n; i++)
res += " ";
return res;
}