繁体   English   中英

将新对象推送到数组会导致现有对象发生变异

[英]pushing new objects to array results in mutation of existing object

我试图创建一个.forEach()其中,用于每个user在对象users的某些特性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)

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

 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);

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM