如何使用节点调试器查看JavaScript Map的内容?

时间:2017-05-29 18:42:08

标签: javascript node.js dictionary node-debugger

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

<board on-delete="$ctrl.deleteBoard(board)"></board>

所以我在调试模式下启动脚本并将观察者附加到'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') 对象。

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> 键的一部分,但是如何添加一个观察者?

1 个答案:

答案 0 :(得分:2)

您可以使用spread operator将地图转换为2D键值数组

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')