Here is my code:
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)
Why my purchasesInfoArray
is just populating with the last value??
My buyersInfo
are:
[{ 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' }]
My purchasesInfoArray
is returning two objects with the last object from array.
I would change your code to
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)
})
To make sure every purchaseInfo is a new reference, otherwise you are just updating allPurchase with every assignment, thus updating every purchaseInfo as they are all sharing the same memory reference.
If you can't use the spread operator because of your javascript version, you can alternatively use the assign method
let purchaseInfo = Object.assign({}, allPurchase);
The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.