将新对象推送到数组会导致现有对象发生突变
pushing new objects to array results in mutation of existing object
我正在尝试创建一个 .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)
您可以通过简单的地图调用来完成此操作。我想你想要的更像是:
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);
我正在尝试创建一个 .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)
您可以通过简单的地图调用来完成此操作。我想你想要的更像是:
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);