推送到对象内部的数组引用推送的对象

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)