Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

200
Views
¿Cómo asigno valores a las claves cuando fusiono 2 objetos con .map()?

Estoy usando .map() para recorrer un objeto y colocar algunos valores en un segundo objeto.

Estoy haciendo esto como tal:

 function convertGraphItems(name, data) { return ({ name, data, type: 'bar', stack: true }); } var generatedArr = [...dataByAccountName.entries()].map(convertGraphItems);

Sin embargo, parece que no puedo asignar 'nombre' y 'datos' a sus respectivas claves.

He intentado return ({ name: name, data: data, type: 'bar', stack: true }); pero esto no logra lo que quiero.

Mi resultado deseado debería verse así:

 [ { "name": "Savings", "data": [ 5474.18, 114031.26, 127890.72 ], "type": "bar", "stack": true } ]

Pero mi resultado actual es:

 [ { "name": [ "Savings", [ 5474.18, 114031.26, 127890.72 ] ], "data": 0, "type": "bar", "stack": true } ]

¿Alguien sabría cómo podría asignar data y name a sus respectivas claves?

EDITAR: la matriz de origen se parece a:

 [ { "key": "Savings", "value": [ 5474.18, 114031.26, 127890.72 ] }, ]
about 4 years ago · Juan Pablo Isaza
3 answers
Answer question

0

Los primeros dos argumentos pasados a la devolución de llamada Array.prototype.map() son

  • element

    El elemento actual que se procesa en la matriz.

  • index

    El índice del elemento actual que se está procesando en la matriz.

Parece poco probable que desee que data sean el índice.

 const dataByAccountName = [{"key":"Savings","value":[5474.18,114031.26,127890.72]}] const generatedArr = dataByAccountName.map(({ key: name, value: data }) => ({ name, data, type: "bar", stack: true })) console.log(generatedArr)
 .as-console-wrapper { max-height: 100% !important; }


Si está utilizando otra cosa que produce entradas (como un mapa), así es como lo mapearía

 const dataByAccountName = new Map() dataByAccountName.set("Savings", [ 5474.18, 114031.26, 127890.72 ]) const generatedArr = Array.from(dataByAccountName, ([ name, data ]) => ({ name, data, type: "bar", stack: true })) console.log(generatedArr)
 .as-console-wrapper { max-height: 100% !important; }

He usado Array.from() desde que en mi opinión se ve mejor que [...map.entries()].map() y logra exactamente lo mismo.

Tenga en cuenta que el primer (y único) argumento pasado a la devolución de llamada de asignación es una matriz desestructurada en lugar de dos argumentos separados.

about 4 years ago · Juan Pablo Isaza Report

0

Está pasando la función convertGraphItems al map y espera el name como key y los data como value , pero este no es el caso aquí.

En el map el primer argumento es el valor y el segundo es el index . Debe hacer que convertGraphItems sea compatible para que pueda pasar el valor externamente como:

 [...dataByAccountName.entries()].map(function ([_, { key, value }]) { return convertGraphItems(key, value); }); 

 const dataByAccountName = [ { key: "Savings", value: [5474.18, 114031.26, 127890.72], }, ]; function convertGraphItems(name, data) { return { name, data, type: "bar", stack: true }; } var generatedArr = [...dataByAccountName.entries()].map(function ([, v]) { const { key, value } = v; return convertGraphItems(key, value); }); console.log(generatedArr);

about 4 years ago · Juan Pablo Isaza Report

0

Si ya tiene la matriz de origen disponible como la incluyó en la pregunta, no necesita una función separada para ella.

 const sources = [{ "key": "Savings", "value": [5474.18, 114031.26, 127890.72] }] const parsedData = sources.map(({key, value}) => ({ name: key, data: value, type: 'bar', stack: true })); console.log(parsedData)

about 4 years ago · Juan Pablo Isaza Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!