Como inserir array e usar Id como índice do objeto
Este é o resultado que desejo alcançar
11:{amount:736
wrk_pay_id:11},
10:{amount:714.29
wrk_pay_id:10},
14:{amount:500
wrk_pay_id:14},
13:{amount:857.14
wrk_pay_id:13},
20:{amount:777
wrk_pay_id:20}
este é o resultado de DeductionArray .. Eu quero mudar os 0,1,2,3,4índices para11,10,14,13,20
0:{amount:736
wrk_pay_id:11},
1:{amount:714.29
wrk_pay_id:10},
2:{amount:500
wrk_pay_id:14},
3:{amount:857.14
wrk_pay_id:13},
4:{amount:777
wrk_pay_id:20}
É assim que empurro no meu DeductionArray. this.generated salaryTenho 4 objecte deductionestá no array aninhado para que eu use 2 foreachpara obter o valor emdeduction
const arr = Object.entries(this.generated_salary)
arr.forEach(([key, value]) => {
Object.entries(value.deduction).forEach(([acc, item]) => {
this.DeductionArray.push({
amount: item.amount,
wrk_pay_id: item.wrk_pay_id
})
This.generated_salay
[
{
"f_name": "Cy",
"deduction": {
"11": {
"amount": 736,
"wrk_pay_id": 11
}
}
},
{
"f_name": "Hel",
"deduction": {
"10": {
"amount": 714.29,
"wrk_pay_id": 10
},
"14": {
"amount": 500,
"wrk_pay_id": 14
}
}
},
{
"f_name": "edd",
"deduction": {
"13": {
"amount": 857.14,
"wrk_pay_id": 13
}
}
},
{
"f_name": "JAY",
"deduction": {
"20": {
"amount": 777,
"wrk_pay_id": 20
}
}
}
]
Respostas
Ainda estou supondo devido à formatação da sua pergunta, mas parece que você realmente deseja apenas combinar os vários deductionobjetos em um único objeto. Não acho que um array seja uma boa escolha se você está contando com os índices como chaves.
// ignore this line, this is just your existing data minified for the demo
const generated_salary = [{"f_name":"Cy","deduction":{"11":{"amount":736,"wrk_pay_id":11}}},{"f_name":"Hel","deduction":{"10":{"amount":714.29,"wrk_pay_id":10},"14":{"amount":500,"wrk_pay_id":14}}},{"f_name":"edd","deduction":{"13":{"amount":857.14,"wrk_pay_id":13}}},{"f_name":"JAY","deduction":{"20":{"amount":777,"wrk_pay_id":20}}}]
const deductions = generated_salary.reduce((c, { deduction }) => ({
...c,
...deduction
}), {})
console.info("deductions =", deductions)
.as-console-wrapper { max-height: 100% !important; }
Isso cria um novo objeto, iterando cada entrada generated_salarye coletando cada deductionobjeto ao mesclá-lo na coleção à medida que os encontra.
Veja também Array.prototype.reduce()e Spread Syntax ( ...)