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

145
Vistas
recorrer un objeto y devolver una matriz de objetos

¿Cómo puedo recorrer este objeto (datos) y devolver una matriz de objetos (salida) como este? básicamente con estas propiedades y valores específicos

 data = { "model-10389": 164703, "model-10388": 164704, "model-10387": 164705, } const output = [ { modelId : 10389, id : 164703 }, { modelId : 10388, id : 164704 }, { modelId : 10387, id : 164705 }, ]

esto es lo que tengo ahora

 Object.keys(data).map(function(key, index) { console.log(data[key]) });

o esto

 for (const property in data) { console.log(`${property}: ${data[property]}`); }
about 4 years ago · Juan Pablo Isaza
3 Respuestas
Responde la pregunta

0

Divide el problema en partes pequeñas:

  1. Obtenga todas las "entradas" del objeto de origen.
  2. Estas entradas deben transformarse, podemos usar Array.map para eso
  3. Cada entrada es una matriz [key, value] , podemos usar la desestructuración en el .map para facilitar el acceso.
  4. Para modelId , necesitamos .split la clave y obtener la parte detrás de - , luego analizarla como un número.
  5. La id es solo el valor.

 const data = { "model-10389": 164703, "model-10388": 164704, "model-10387": 164705 }; const result = Object.entries(data) .map(([key, value]) => ({ modelId: parseInt(key.split('-')[1], 10), id: value })); console.log(result);

Una alternativa un poco más rápida a split , id para usar una expresión regular para extraer ids:

 modelId: parseInt(key.match(/\d+/)[0], 10),

Sin embargo, si vamos a ir tan lejos como podamos para optimizar esta transformación, tendremos que hacer algunos cambios más:

  • Unario + en lugar de parseInt .
  • for in loop en lugar de Object.entries y .map .
  • Regex en lugar de .split

Eso te dará:

 const data = { "model-10389": 164703, "model-10388": 164704, "model-10387": 164705 }; const result = []; for (let key in data) { result.push({ modelId: +key.match(/\d+/)[0], id: data[key] }); } console.log(result);

about 4 years ago · Juan Pablo Isaza Denunciar

0

Object.entries con desestructuración de objetos, sintaxis literal de objetos cortos y + unario para la conversión a número:

 const data = {"model-10389": 164703, "model-10388": 164704, "model-10387": 164705}; const output = Object.entries(data).map(([key, id]) => ({ modelId: +key.replace(/.*-/, ""), id })); console.log(output);

about 4 years ago · Juan Pablo Isaza Denunciar

0

Si la clave (modelo-*) en los datos no cambia, entonces puede usar substring() con el índice.

 const data = { "model-10389": 164703, "model-10388": 164704, "model-10387": 164705 } const result = Object.entries(data) .map(([key, value]) => ({ modelId: +key.substring(6), id: value })); console.log(result)

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