Node.js格式化控制台输出

exe*_*ook 55 console node.js

是否有一种简单的内置方式将格式化数据输出到Node.js中的控制台?

缩进,向左或向右对齐字段,添加前导零?

The*_*tan 46

在ES2017(ES8)中引入了两个新的(1)内置方法String.Prototype.padStartString.Prototype.padEnd,它们执行所需的填充功能.

(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"
Run Code Online (Sandbox Code Playgroud)

要将 json缩进到控制台上,请尝试使用JSON.stringify.第三个参数提供所需的缩进.

JSON.stringify({ a:1, b:2, c:3 }, null, 4);
// {
//    "a": 1,
//    "b": 2,
//    "c": 3
// }
Run Code Online (Sandbox Code Playgroud)

  • 值得注意的是,这仅在节点> = 8.2.1中支持(或者如果使用`--harmony`标志运行则> = 7.5.0),因为它现在已经很新了. (3认同)

Wir*_*rie 26

NodeJS没有内置任何功能.你来的"最接近的"是util.format,遗憾的是它仍然没有多少(参考).

您需要查看其他模块以提供更丰富的格式化体验.例如: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));
Run Code Online (Sandbox Code Playgroud)

结果:

Space Padded =>     123.46
    _ Padded => ____123.46
    0 Padded => 0000123.46
 Left align => 123.46    
Run Code Online (Sandbox Code Playgroud)

  • `util.format`总比没有好.但是,并没有好多少.:)如果它只是`console.log`的一部分......那么它会更有意义. (4认同)
  • util.format没有用,我想知道为什么它存在。 (2认同)

Zai*_*ain 15

如果数据是表格式的,那么最简单的方法就是使用 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
    };
  })
);
Run Code Online (Sandbox Code Playgroud)

您不需要外部库.这是样本输出.您只需要传递一个数组对象. 在此输入图像描述

不仅在Nodejs中,它也适用于chrome.

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

在此输入图像描述

  • 有没有办法让文字左对齐? (3认同)
  • 有什么方法可以左缩进列的内容吗?它默认为居中对齐。 (2认同)

use*_*109 6

如果您有更简单的需求,可以查看util.format.它可以从各种参数生成字符串.如果你想要printf之类的格式化,你可以使用sprintf包或sprintf-js包.

  • 好像和我的回答一样?:) (2认同)