嵌套 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)
创建一个新对象时,您并不是在推送一个新对象,只是对您随后变异的同一对象的另一个引用。
我在 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)
创建一个新对象时,您并不是在推送一个新对象,只是对您随后变异的同一对象的另一个引用。