javascript - 更新 for 循环内的 Javascript 对象属性

标签 javascript

我正在尝试用另一个对象更新 JS 对象,这看起来很简单,但值没有更新。

let sampleObj = {
  id: 1,
  name: 'Kelly'
}

let userData = [{
    students: [{
      id: 1,
      name: 'Sandra'
    }]
  },
  {
    students: [{
      id: 2,
      name: 'Jerome'
    }]
  }
]

for (let group of userData) {
  for (let student of group.students) {
    if (student.id === sampleObj.id) {
      console.log('updating student object')
      student = sampleObj

      // student = { ...sampleObj }     (another failed attempt)
      // userData[group].students[student] = sampleObj     (another failed attempt)
    }
  }
}

console.log('userData', userData)

看起来,student只是一些 float 的东西,在我尝试更新其值时与userData无关。但是,我不知道如何进行更新或我缺少什么。

编辑:预期输出是在找到 student 对象后将其替换为 sampleObj

最佳答案

使用 forEach(el, index) 来代替,以便您可以使用索引来进行更新:

let sampleObj = {
  id: 1,
  name: 'Kelly'
}

let userData = [{
    students: [{
      id: 1,
      name: 'Sandra'
    }]
  },
  {
    students: [{
      id: 2,
      name: 'Jerome'
    }]
  }
]

userData.forEach((group, m) => {
  group.students.forEach((student, n) => {
    if (student.id === sampleObj.id) {
      console.log('updating student object')
      userData[m].students[n] = sampleObj
    }
  })
})

console.log('userData', userData)

关于javascript - 更新 for 循环内的 Javascript 对象属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54246232/

相关文章:

javascript - 如何使用 mocha sinon 模拟类异步/等待函数

javascript - 添加新内容时使用动画时 jQuery 问题

javascript - CSS - 我怎样才能让第一行总是固定的?

javascript - javascript参数背后的概念是什么?

javascript - 查询某个元素是否有超过1个id,如果有,则将它们连接起来并放回1个id

javascript - jQuery keypress/keydown 无法正常工作

javascript - 检查是否加载了 analytics.js

javascript - 用于开放图操作的访问 token

javascript - 如何仅通过 HTML 调用函数内部的函数

用于深度优先搜索的 Javascript 扩展运算符