【问题标题】:Dumping whole array: console.log and console.dir output "... NUM more items]"转储整个数组:console.log 和 console.dir 输出“... NUM more items]”
【发布时间】:2017-05-30 20:35:07
【问题描述】:

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

['item',
 'item',
  >>more items<<<
  ... 399 more items ]

如何记录整个数组以便快速复制?

【问题讨论】:

  • 试试console.log(JSON.stringify(arr, null, 1));
  • 那么,为什么不创建自己的循环并以您想要的方式一次输出呢?当您这样做时,您可以完全控制输出。
  • 如果可以的话,我建议将标记的答案更改为 stackoverflow.com/a/41669062/124486,因为如果您使用的是 Node v10+,这是一个更好的解决方案

标签: arrays node.js v8 dump console.log


【解决方案1】:

Using console.table

在 Node v10+ 中可用,and all modern web-browsers,您可以改用console.table(),它将输出一个漂亮的 utf8 表,其中每一行代表数组的一个元素。

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

┌─────────┬─────┐
│ (index) │  a  │
├─────────┼─────┤
│    0    │  1  │
│    1    │ 'Z' │
└─────────┴─────┘

【讨论】:

  • 不想要不同的包对不起,希望能用原生节点做这个
  • @Antoine 现在在 Node v10 中,您可以考虑重新评估这个问题。这是一个更好的方法 =)
  • console.table 函数非常有用,但是 OP 要求提供一个可以打印并允许他们快速复制输出的函数;据说仍然是 JS 格式(粘贴到其他地方或缓存结果)。因此,最佳答案中的console.dir() 更能满足问题。
【解决方案2】:

myArray.forEach(item =&gt; console.log(item)) 有什么问题?

【讨论】:

  • 我想将这些项目添加到现有数组中。
  • 如果你想将一个数组添加到另一个数组,为什么不使用Array.concat
  • 我认为他可能想要现有的结构,而不是逐项。当每个项目都是一个“太长”的数组时,这也是一个问题
【解决方案3】:

设置maxArrayLength

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

  1. 将覆盖作为选项提供给console.dir

    console.dir(myArry, {'maxArrayLength': null});
    
  2. 设置util.inspect.defaultOptions.maxArrayLength = null;,这将影响对console.logutil.format的所有调用

  3. 使用options 自己致电util.inspect

    const util = require('util')
    console.log(util.inspect(array, { maxArrayLength: null }))
    

【讨论】:

  • 特别是我也喜欢console.log(util.inspect(arrayofObjects, {maxArrayLength: null, depth:null })) 来深入研究对象。
  • 刚刚有机会检查一下,保存为正确答案
  • @MichaelHellein 将 maxArrayLength 作为一个选项传递给 console.log 最终也会打印它。 ... 267 more items ] { maxArrayLength: 500 }。我必须使用console.dir 而不是console.log 才能让它工作。
  • 只是给后人的说明:我给出的答案已经过大量编辑,我认为不再称它为我的答案是公平的。我更希望将如此大量的编辑作为单独的答案提供。
【解决方案4】:

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

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

【讨论】:

    【解决方案5】:

    Michael Hellein 的回答对我不起作用,但一个接近的版本对我有用:

    console.dir(myArray, {'maxArrayLength': null})
    

    这是唯一对我有用的解决方案,因为 JSON.stringify() 对我的需求来说太丑了,我不需要编写代码一次打印出来。

    【讨论】:

    • 此处相同,其他选项将打印相同的内容
    猜你喜欢
    • 2018-05-03
    • 2020-04-29
    • 2012-12-21
    • 2020-05-13
    • 2021-12-24
    • 1970-01-01
    • 2014-01-28
    相关资源
    最近更新 更多