web-dev-qa-db-ja.com

Node.js形式のコンソール出力

Node.jsのコンソールにフォーマットされたデータを出力する簡単な組み込み方法はありますか?

インデント、フィールドを左または右に揃え、先行ゼロを追加しますか?

53
exebook

2つのnew(1)ビルトインメソッド String.Prototype.padStart および String.Prototype.padEnd はES2017(ES8)で導入され、必要なパディング機能を実行します。

(1)node> = 8.2.1(または--harmonyフラグを指定して実行した場合は> = 7.5.0)

Mdnページの例:

'abc'.padStart(10);         // "       abc"
'abc'.padStart(10, "foo");  // "foofoofabc"
'abc'.padStart(6,"123465"); // "123abc"
'abc'.padStart(8, "0");     // "00000abc"
'abc'.padStart(1);          // "abc" 

'abc'.padEnd(10);          // "abc       "
'abc'.padEnd(10, "foo");   // "abcfoofoof"
'abc'.padEnd(6, "123456"); // "abc123"
'abc'.padEnd(1);           // "abc"

コンソールにjsonをインデントするには、 JSON.stringify を使用してみてください。 3番目のパラメーターは、必要なインデントを提供します。

JSON.stringify({ a:1, b:2, c:3 }, null, 4);
// {
//    "a": 1,
//    "b": 2,
//    "c": 3
// }
42
TheChetan

これを行うためにNodeJSに組み込まれているものはありません。あなたが来る「最も近い」はutil.format、これはまだ残念ながらあまり機能しません( reference )。

より豊富なフォーマットエクスペリエンスを提供するには、他のモジュールを調べる必要があります。例: sprintf

Sprintf-jsでは、位置(0、1、2)引数と名前付き引数の両方を使用できます。

パディングと配置のいくつかの例:

var sprintf=require("sprintf-js").sprintf;

console.log(sprintf("Space Padded => %10.2f", 123.4567));
console.log(sprintf("    _ Padded => %'_10.2f", 123.4567));
console.log(sprintf("    0 Padded => %010.2f", 123.4567));
console.log(sprintf(" Left align => %-10.2f", 123.4567));

結果:

Space Padded =>     123.46
    _ Padded => ____123.46
    0 Padded => 0000123.46
 Left align => 123.46    
26
WiredPrairie

データが表形式の場合、最も簡単な方法はconsole.table

https://nodejs.org/dist/latest-v10.x/docs/api/console.html#console_console_table_tabulardata_properties

これがコードです。

console.table(
  COMMANDS.map(command => {
    return {
      "Long Option": command.long_option,
      "Short Option": command.short_option,
      Description: command.description
    };
  })
);

外部ライブラリは必要ありません。出力例を次に示します。配列オブジェクトを渡すだけです。 enter image description here

Nodejsだけでなく、chromeでも機能します。

https://developer.mozilla.org/en-US/docs/Web/API/Console/table

enter image description here

14
Zain

より単純なニーズがある場合は、 til.format を調べることができます。さまざまなパラメーターから文字列を生成できます。 printfのような書式設定が必要な場合は、 sprintf packageまたは sprintf-js packageのいずれかを使用できます。

6
user568109
3
jjstiff

Log4JS を見てください。これはLog4jの機能ポートでの試みです

2
LeeGee