【发布时间】:2018-04-04 17:44:33
【问题描述】:
我正在为一个学校项目开发 Connect Four 应用程序。 目前,我正在尝试 JSON.stringify 包含“洞”对象的二维数组(每个包含键:x、y、列、行、p1 和 p2)的对象,以便我可以将其发送到服务器,并让它广播两个客户端->这将使两个客户端的游戏状态保持更新。
就在我 JSON.stringify(holeObjArray) 之前,我 console.logged 对象的内容,它们显示更新的游戏状态:
我已经突出显示(红色):holeObjArray[5][6] 包含一个键 'p1' = 1,这对应于当前游戏状态(在右侧)。
当我 JSON.stringify 对象时,在这里看到:
function sendGrid()
{
console.log(holeObjArray);
JSONStr = JSON.stringify(holeObjArray);
console.log(JSONStr);
//ws.send(JSONStr);
}
JSONStr 的输出显示如下:
如您所见,字符串化的对象并不代表当前的游戏状态。事实上,如果我继续播放,字符串化的对象将始终代表 last 播放时棋盘的状态。 我不明白为什么 JSON.stringify() 会这样做? 特别是因为holeObjArray 在我对它进行字符串化之前正确地表示了网格,但是一旦我这样做了,JSONStr 字符串就表示在刚刚制作的网格之前正在移动的网格。 对此问题的任何帮助将不胜感激,
谢谢,
亚历克斯
【问题讨论】:
-
控制台位于 - 您在控制台中看到的值可以更改 - 而 JSON.stringify 是真正的不可变字符串快照
-
好的...但是当我继续玩游戏并让客户端 JSON.parse 传递的 JSONString(游戏状态)时,每个客户端都会显示一个落后一步的游戏状态.所以,JSONString 已经过时了(一步之遥)......
-
在移动完成后你不是调用这个代码吗?没有代码很难看出问题所在......
-
你需要显示比你显示的更多的代码
-
我已经编辑了问题并添加了客户端代码。谢谢你,Jaromanda X
标签: javascript json node.js stringify