嵌套 For of Loop Inside If 语句仅保留最后一个值

Nested For of Loop Inside If Statement Only retains last value

我在 Angular 服务中的嵌套 for 循环遇到了最奇怪的问题。我有一个服务,其中我是 运行 下面的 forEach 函数,数据从服务返回。

someArr.forEach(elem => {
 //do something with elem
    if(elem['users'].length >= 1) {
      for (let user of elem['users']) {
        console.log('>>> ', user['firstName'])
        elem['userFirstName'] = user['firstName'];
        elem['userLastName'] = user['lastName'];
        this.tempArr.push(elem);
      }
    } else {
       this.tempArr.push(elem);
    }
  })

console.log 正在从内部 for 循环中注销正确的名字和姓氏,但只有最后一个值被推送到 tempArr。我认为使用 let 词可以解决这个关闭问题。我在这里错过了什么?

当您使用 Object.assign({}, elem) 创建一个新对象时,您并不是在推送一个新对象,只是对您随后变异的同一对象的另一个引用。