Javascript 在forEach循环中添加属性

Javascript 在forEach循环中添加属性,javascript,foreach,Javascript,Foreach,我很抱歉问了这么一个简单的问题,也许答案很简单。我正在尝试向嵌套的forEach循环中的对象添加属性。出于某种原因,它就是不起作用 我尝试使用Object.assign()创建一个新变量,然后复制参数。。。就是不能让它工作!代码如下: req.user.gamesDetails.forEach(游戏=>{ 游戏。成就。forEach(成就=>{ console.log(game.name)//计算结果为game1(按预期) aclementation.game=game.name; consol

我很抱歉问了这么一个简单的问题,也许答案很简单。我正在尝试向嵌套的
forEach
循环中的对象添加属性。出于某种原因,它就是不起作用

我尝试使用
Object.assign()
创建一个新变量,然后复制参数。。。就是不能让它工作!代码如下:

req.user.gamesDetails.forEach(游戏=>{
游戏。成就。forEach(成就=>{
console.log(game.name)//计算结果为game1(按预期)
aclementation.game=game.name;
console.log(成就)//游戏属性不存在!
})
})
const gamesDetails=[{
“名称”:“游戏1”,
“成就”:[{
“名称”:“成就1”,
“别名”:“ach1”,
}]
}]
gamesDetails.forEach(game=>{
游戏。成就。forEach(成就=>{
console.log(game.name)//计算为gameName(它不是未定义的)
aclementation.game=game.name;
console.log(成就)//游戏属性不存在!
})
})
req={
用户:{
游戏详情:[{
名称:'game1',
成就:[{
身份证号码:1
}, {
身份证号码:2
}, {
身份证号码:3
}]
},
{
名称:'game2',
成就:[{
身份证号码:1
}, {
身份证号码:2
}, {
身份证号码:3
}]
}
]
}
}

对于这种结构(基于您的代码),您的代码工作得很好…

我管理了一个如下的解决方法:

Above is updating the value but not updated on value at index.

let arr = req.user.gamesDetails.forEach(game => {
  return game.achievements.forEach((achievement,index) => {
    console.log(game.name) // evaluates to gameName (it's not undefined)
game.achievements[index].achievement.game = game.name;
    console.log(achievement) // game property doesn't exist!
    return achievement
  })
})
req.user.gamesDetails.forEach(game => {
    game.achievements.forEach(achievement => {
        const newAchievement = {
            name: achievement.name,
            game: game.name
        }

        achievement = newAchievement;
        console.log(achievement.game) // game1
        console.log(achievement) // game property is now on the object

    })
})

它仍然没有解释这种奇怪的行为,但它现在起作用了,至少

成就是一个普通的对象吗?你用
控制台.log(acquisition.game)
得到了什么?请用
游戏细节
数组的一些示例数据创建一个。你的数据是什么?游戏细节对象看起来像:
[{“name”:“game1”,“成就”:[{“名称”:“成就1”,“别名”:“ach1”,}]}]
我想将game1添加到每项成就中。@AZ_;I获得“game1”…如预期的那样。但是使用console.log(成就)我没有得到安慰。请不要回答不包括a的问题。如果没有提供足够的代码,它应该关闭,直到OP提供进一步的信息。第一个参数
成就
游戏相同。成就[索引]
我也尝试过这种方法…也不起作用。奇怪!