推送到对象内部的数组引用推送的对象
Pushing to an array inside an object references the pushed object
该片段详细说明了我的问题。我有一个存储对象数组的对象(其中一些是数组)。当我推送到这些内部数组时,该值推送到数组中的所有元素,而不仅仅是我要查找的索引。
我觉得这应该是一个非常容易解决的问题 - 但我已经尝试了所有方法。切换到 concat,push,将内容放入 for 循环。当我 运行 代码段中的简化版本时 -(请参阅下面的代码段)- 然后它说某个 ID 有一个“ref”。我不确定这意味着什么,但我猜有人知道!任何帮助都会很棒。
const runs = {
AC: {
L: Array(10).fill({
stim: [],
mask: [],
resp: [],
other: []
}),
R: Array(10).fill({
stim: [],
mask: [],
resp: [],
other: []
})
},
}
let runData = runs["AC"]["R"][3]
runData.stim.push(40)
console.log(runs.AC.R)
您正在用相同的引用填充数组。相反,用空项填充数组,然后 map
插入对象:
runs = {
AC: {
L: Array(10).fill().map(e=>({
stim: [],
mask: [],
resp: [],
other: []
})),
R: Array(10).fill().map(e=>({
stim: [],
mask: [],
resp: [],
other: []
}))
},
}
let runData = runs["AC"]["R"][3]
runData.stim.push(40)
console.log(runs.AC.R)
该片段详细说明了我的问题。我有一个存储对象数组的对象(其中一些是数组)。当我推送到这些内部数组时,该值推送到数组中的所有元素,而不仅仅是我要查找的索引。
我觉得这应该是一个非常容易解决的问题 - 但我已经尝试了所有方法。切换到 concat,push,将内容放入 for 循环。当我 运行 代码段中的简化版本时 -(请参阅下面的代码段)- 然后它说某个 ID 有一个“ref”。我不确定这意味着什么,但我猜有人知道!任何帮助都会很棒。
const runs = {
AC: {
L: Array(10).fill({
stim: [],
mask: [],
resp: [],
other: []
}),
R: Array(10).fill({
stim: [],
mask: [],
resp: [],
other: []
})
},
}
let runData = runs["AC"]["R"][3]
runData.stim.push(40)
console.log(runs.AC.R)
您正在用相同的引用填充数组。相反,用空项填充数组,然后 map
插入对象:
runs = {
AC: {
L: Array(10).fill().map(e=>({
stim: [],
mask: [],
resp: [],
other: []
})),
R: Array(10).fill().map(e=>({
stim: [],
mask: [],
resp: [],
other: []
}))
},
}
let runData = runs["AC"]["R"][3]
runData.stim.push(40)
console.log(runs.AC.R)