[英]Array.push not working in forEach loop using node js / javascript
[英]array.push not working inside forEach loop
这是我的代码:
let purchasesInfoArray = []
console.log('buyersInfo', buyersInfo)
buyersInfo.forEach((runner) => {
console.log('runner', runner)
let purchaseInfo = allPurchase
let purchaseFunction = {}
counter = counter + 1;
console.log('counter é:', counter)
delete purchaseInfo.friends
purchaseInfo.priceCents = runner.price
purchaseInfo.totalTaxPaid = 600
purchaseInfo.iuguTaxPaid = 198
purchaseInfo.kmaisTaxPaid = 402
purchaseInfo.status = 'paid'
purchaseInfo.runnerCpf = runner.runnerCpf
purchaseInfo.modality = runner.modality
purchaseInfo.sex = runner.sex
purchaseInfo.age = runner.age
purchaseInfo.birth = runner.birth
purchaseInfo.buyerName = runner.buyerName
console.log('número de corredor é:', (oldCounter + counter))
purchaseInfo.runnerNumber = (oldCounter + counter)
purchasesInfoArray.push(purchaseInfo)
console.log('purchase info:', purchaseInfo)
})
console.log(purchasesInfoArray)
为什么我的purchasesInfoArray
只是填充了最后一个值?
我的buyersInfo
是:
[{ age: 25,
birth: '15/07/1994',
buyerName: 'Romário 2',
kit: 'Básico',
modality: 'Caminhada',
price: 60,
runnerCpf: '012.499.862-32',
sex: 'man' },
{ age: 25,
birth: '14/07/1994',
buyerName: 'Romário 1',
kit: 'Básico',
modality: '5 KM',
price: 60,
runnerCpf: '012.499.862-30',
sex: 'man' }]
我的purchasesInfoArray
返回两个对象,最后一个对象来自数组。
我将您的代码更改为
let purchasesInfoArray = []
console.log('buyersInfo', buyersInfo)
buyersInfo.forEach((runner) => {
console.log('runner', runner)
let purchaseInfo = {...allPurchase} // <-- This line
let purchaseFunction = {}
counter = counter + 1;
console.log('counter é:', counter)
delete purchaseInfo.friends
purchaseInfo.priceCents = runner.price
purchaseInfo.totalTaxPaid = 600
purchaseInfo.iuguTaxPaid = 198
purchaseInfo.kmaisTaxPaid = 402
purchaseInfo.status = 'paid'
purchaseInfo.runnerCpf = runner.runnerCpf
purchaseInfo.modality = runner.modality
purchaseInfo.sex = runner.sex
purchaseInfo.age = runner.age
purchaseInfo.birth = runner.birth
purchaseInfo.buyerName = runner.buyerName
console.log('número de corredor é:', (oldCounter + counter))
purchaseInfo.runnerNumber = (oldCounter + counter)
purchasesInfoArray.push(purchaseInfo)
console.log('purchase info:', purchaseInfo)
})
为确保每个purchaseInfo是一个新的引用,否则,您将使用每个分配更新allPurchase,从而更新每个purchaseInfo,因为它们都共享相同的内存引用。
如果由于javascript版本而无法使用传播运算符,则可以选择使用assign方法
let purchaseInfo = Object.assign({}, allPurchase);
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.