Como inserir array e usar Id como índice do objeto

Oct 27 2020

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

1 Phil Oct 27 2020 at 10:28

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 ( ...)