Why is JSON.parse changing the values in nested arrays?
为了学习Angular2,我在使用SystemJS时用AngularCLI制作了一个ConnectFour游戏。
我正在用新的基于Webpack的CLI从头复制这项工作,我遇到了一个奇怪的问题…
下面的方法接收一个包含JSON编码数据的字符串,并用它初始化一个新的游戏实例。我添加了一些
1 2 3 4 5 6 7 8 9 10 11 | export class ConnectFourGameModel { static fromJSON(jsonString: any): ConnectFourGameModel { let jsonData = JSON.parse(jsonString); console.log('*** from JSON (compare the"columns" array between jsonString and jsonData below) ***'); console.log('jsonString: ', jsonString); console.log('jsonData: ', jsonData); ... return result; } |
运行时,第一个
1 2 3 4 | jsonString: {... Several fields here ... "columns":[[0,0,0,0,0,1],[0,0,0,0,0,0],[0,0,0,0,0,0],[0,0,0,0,0,0],[0,0,0,0,0,0],[0,0,0,0,0,0],[0,0,0,0,0,0],[0,0,0,0,0,0],[0,0,0,0,0,0],[0,0,0,0,0,0],[0,0,0,0,0,0],[0,0,0,0,0,0],[0,0,0,0,0,0],[0,0,0,0,0,0],[0,0,0,0,0,0]] } |
但是第二个
1 2 3 4 5 6 7 8 | jsonData: > Object {... Several fields here ... > columns: Array[15] V 0: Array[6] 0: 2 <-- Should be 0 1: 2 <-- Should be 0 2: -1 <-- Should be 0 etc... |
为什么会这样?
如果您在Github页面上加载应用程序,在浏览器上打开JavaScript控制台,然后单击任何列进行移动,您可能会看到更好的效果。
存储库位于github上:https://github.com/cmermingas/connect-four-webpack
我在这里寻找有关用json.parse解析嵌套数组的问题,但是我不能将这个问题与我发现的问题联系起来。
提前多谢!
如果你把你的字符串例子放进一把小提琴里,它看起来解析得很好:
https://jsfiddle.net/z67lgyrm/
可能发生的情况是,您在
另外,您似乎在列数组上使用了
请参阅此处以获取可能的解决方案:创建多维数组的副本,而不是引用-javascript