【发布时间】:2019-04-27 21:46:48
【问题描述】:
我正在尝试更改嵌套键值结构中的特定值,但是当我设置一个值时,它会更改所有键的值。
初始数据为:
const data = {
"1.157685561": {
"1222344": {
"batb": [
[0, 0],
[0, 0],
[0, 0]
],
"batl": [
[0, 0],
[0, 0],
[0, 0]
]
},
"1222345": {
"batb": [
[0, 0],
[0, 0],
[0, 0]
],
"batl": [
[0, 0],
[0, 0],
[0, 0]
]
}
}
}
我想改变特定路径的值
data['1.157685561']['1222344']['batl'][0] = [1,2]
但结果是错误的。因为它改变了:
data['1.157685561']['1222344']data['1.157685561']['1222345']
最终结果:
{
"1.157685561": {
"1222344": {
"batb": [
[0, 0],
[0, 0],
[0, 0]
],
"batl": [
[1, 2],
[0, 0],
[0, 0]
]
},
"1222345": {
"batb": [
[0, 0],
[0, 0],
[0, 0]
],
"batl": [
[1, 2],
[0, 0],
[0, 0]
]
}
}
}
【问题讨论】:
-
这将如何发生?你必须有一些你没有向我们展示的其他代码——这实际上不会发生。
-
你是如何生成这个结构的?
-
我猜你是你没有复制对象。所以他们保留参考。你能创建一个可运行的 sn-p 来显示问题吗?
-
我确实添加了源代码
-
检查这一行:
for (const runner of runners) {data[runner] = marketData;}。由于marketData是object,因此您存储了对同一个object的多个引用。这是个问题。
标签: javascript arrays dictionary key-value