javascript - 如何使用 Node 调试器查看 JavaScript 映射的内容?

标签 javascript node.js dictionary node-debugger

我在 NodeJS 中使用控制台调试器,想观察一个 Map 对象。这是我要练习的简单测试脚本。

'use strict'

const data = new Map()

const readline = require('readline-sync')
let input
do {
  input = String(readline.question('enter command: ')).trim()
  debugger
  if (input.indexOf('add ') === 0) {
    const space = input.indexOf(' ')
    const item = input.substring(space).trim()
    console.log(`adding '${item}'`)
    let qty = 1
    debugger
    if (data.has(item)) qty = data.get(item) + 1
    data.set(item, qty)
  }
  if (input.indexOf('list') === 0) {
    data.forEach( (val, key) => {
        process.stdout.write(`${key}\t${val}\n`)
    })
  }
} while (input !== 'exit')

所以我在 Debug模式下启动脚本并将观察器附加到 data 对象。

node debug simpleDebug.js
< Debugger listening on 127.0.0.1:5858
connecting to 127.0.0.1:5858 ... ok
break in simpleDebug.js:2
  1 
> 2 'use strict'
  3 
  4 const data = new Map()
debug> watch('data')
debug> c
debug> enter command: add cheese
break in simpleDebug.js:10
Watchers:
  0: data = {"handle":15,"type":"map","text":"#<Map>"}

  8 do {
  9     input = String(readline.question('enter command: ')).trim()
>10     debugger
 11     if (input.indexOf('add ') === 0) {
 12         const space = input.indexOf(' ')
debug>

如您所见,调试器不显示映射中存储的值。我假设这些是 "text" 键的一部分,但我如何向其添加观察者?

最佳答案

您可以使用 spread operator将 map 转换为二维键值数组

watch('[...data]')

或者如果你想查看特定键的值

watch("data.get('myKey')")

或者只是键

watch('[...data.keys()]')

或者只是值

watch('[...data.values()]')

或者,您可以考虑使用常规对象并观察该变量。像这样的东西:

var obj = {};
//your code
if(obj[item]){
    obj[item] += 1;
} else {
    obj[item] = 1;
}

watch ('obj')

关于javascript - 如何使用 Node 调试器查看 JavaScript 映射的内容?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44248739/

相关文章:

javascript - 混合ajax和完整请求

javascript - Express Generator 和 KrakenJS 有什么区别?

python - 我如何停止rabbitmq worker 中间脚本?

javascript - 正文中的 Node HTML

javascript - 这是JavaScript中可行的 map 制作方法吗?

python - 以漂亮的格式打印字典键的简洁方法

javascript - 通过 link_to Rails 4 将参数传递给 Controller ​​方法

javascript - 是否可以将 jQuery 转译为 Vanilla JS?

javascript - 如何附加(连接)字符串以构造新字符串?

python - 如何以Python方式从嵌套字典中获取键