转储整个数组:console.log和console.dir输出"... NUM more items]"

Ant*_*ony 38 arrays v8 dump node.js console.log

我正在尝试记录一个长数组,以便我可以在终端中快速复制它.但是,如果我尝试记录数组,它看起来像:

['item',
 'item',
  >>more items<<<
  ... 399 more items ]
Run Code Online (Sandbox Code Playgroud)

如何记录整个阵列,以便我可以快速复制?

Mic*_*ein 53

设置 maxArrayLength

有几种方法都需要设置maxArrayLength,否则默认为100.

  1. 提供覆盖作为console.log或的选项console.dir

    console.log( myArry, {'maxArrayLength': null} );
    
    Run Code Online (Sandbox Code Playgroud)
  2. 设置util.inspect.defaultOptions.maxArrayLength = null;将所有呼叫影响console.logutil.format

  3. util.inspect选项打电话给自己.

    const util = require('util')
    console.log(util.inspect(array, { maxArrayLength: null }))
    
    Run Code Online (Sandbox Code Playgroud)

  • @MichaelHellein将`maxArrayLength`作为一个选项传递给console.log最终也将其打印出来。`... 267个更多项目] {maxArrayLength:500}`。我必须使用`console.dir`而不是`console.log`才能使其正常工作。 (18认同)
  • 只是后人的一个注释:我给出的答案已经过如此重大的编辑,我认为现在不再是我的称呼了。我希望提供这样一个实质性的编辑作为单独的答案。 (4认同)
  • 具体来说,我也喜欢做 `console.log(util.inspect(arrayofObjects, {maxArrayLength: null, depth:null }))` 来深入研究对象。 (2认同)
  • @BigMoney同样的事情,想知道这是否是对Node的更新。 (2认同)

squ*_*oid 15

使用 console.table

在 Node v10+和所有现代 web 浏览器中可用,您可以改用console.table()它,它将输出一个漂亮的 utf8 表,其中每一行代表数组的一个元素。

> console.table([{ a: 1, b: 'Y' }, { a: 'Z', b: 2 }], ['a']);

?????????????????
? (index) ?  a  ?
?????????????????
?    0    ?  1  ?
?    1    ? 'Z' ?
?????????????????
Run Code Online (Sandbox Code Playgroud)


Big*_*ney 10

迈克尔·海伦(Michael Hellein)的答案对我不起作用,但封闭版本却适用:

console.dir(myArray, {'maxArrayLength': null})
Run Code Online (Sandbox Code Playgroud)

这是唯一对我JSON.stringify()有用的解决方案,因为它很难满足我的需要,而且我不需要编写代码即可一次打印出来。


Sta*_*lav 7

刚刚发现该选项也maxArrayLength适用于console.dir

console.dir(array, {depth: null, colors: true, maxArrayLength: null});


小智 5

这有什么错myArray.forEach(item => console.log(item))