Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

199
Vistas
¿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 Respuestas
Responde la pregunta

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 Denunciar

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 Denunciar

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 Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda