【问题标题】:pushing new objects to array results in mutation of existing object将新对象推送到数组会导致现有对象发生突变
【发布时间】:2020-09-05 01:02:20
【问题描述】:

我正在尝试创建一个.forEach(),其中对于users 中的每个user 对象,user 的某些属性被映射,然后作为彼此分开的新对象推送到players 数组。

但是在我的尝试中,user 的所有结果都堆叠到一个对象中。如何确保每个 .push() 为每个 user 创建一个新对象

我想要什么

[
  {
    name: 'Johnny',
    id: '123456789',
    lives: 3
  },

  {
    name: 'Timmy',
    id: '987654321',
    lives: 3
  },
]

我得到了什么

[
  {
    name: [ 'Johnny', 'Timmy' ],
    id: [ '123456789', '987654321' ],
    lives: 3
  }
]

代码

let players = []
const users = {...}
                
users.forEach(user => {
   let username = user.map(user => user.username)
   let id = user.map(user => user.id)

   players.push({ name: username, id: id, lives: 3 })
})
                
console.log(players)

【问题讨论】:

  • .map() 返回一个新数组。

标签: javascript object foreach push


【解决方案1】:

您可以通过一个简单的地图调用来完成此操作。我想你想要的更像是:

const users = [
  { username: 'alice', id: 123 },
  { username: 'bob', id: 456 },  
]

const players = users.map(user => ({
  name: user.username,
  id: user.id,
  lives: 3
}))

console.log(players);

【讨论】:

    猜你喜欢
    • 2021-10-25
    • 1970-01-01
    • 1970-01-01
    • 2020-08-29
    • 2019-04-08
    • 1970-01-01
    • 2021-05-30
    • 1970-01-01
    相关资源
    最近更新 更多