Cómo insertar una matriz y usar Id como índice de objeto

Oct 27 2020

Este es el resultado que quiero lograr

    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 es el resultado de DeductionArray .. Quiero cambiar los 0,1,2,3,4índices a11,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}

Así es como lo presiono en mi DeductionArray .. this.generated salaryHave 4 objecty deductionestá en una matriz anidada para que use 2 foreachpara obtener el valor endeduction

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
      }
    }
  }
]

Respuestas

1 Phil Oct 27 2020 at 10:28

Todavía estoy adivinando debido al formato de su pregunta, pero parece que realmente solo desea combinar los diversos deductionobjetos en un solo objeto. No creo que una matriz sea una buena opción si confía en los índices como claves.

// 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; }

Esto crea un nuevo objeto iterando cada entrada generated_salaryy recolectando cada deductionobjeto fusionándolos en la colección a medida que los encuentra.

Consulte también Array.prototype.reduce()y Sintaxis de propagación ( ...)