【问题标题】:Pushing to an array inside an object references the pushed object [duplicate]推送到对象内的数组引用推送的对象[重复]
【发布时间】:2021-12-04 14:55:17
【问题描述】:

sn-p 详细说明了我的问题。我有一个存储对象数组的对象(其中一些是数组)。当我推送到这些内部数组时,该值会推送到数组中的所有元素,而不仅仅是我要查找的索引。

我觉得这应该是一个非常容易解决的问题 - 但我已经尝试了所有方法。切换到 concat,push,将东西放入 for 循环。当我在 sn-p 中运行简化版本时——(见下面的 sn-p)——然后它说某个 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)

【问题讨论】:

    标签: javascript arrays object concatenation push


    【解决方案1】:

    您正在使用相同的引用填充数组。相反,用空项填充数组,然后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)

    【讨论】:

    猜你喜欢
    • 2017-09-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-08-27
    • 1970-01-01
    • 2015-11-17
    • 1970-01-01
    • 2014-05-16
    相关资源
    最近更新 更多