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

158
Vistas
crear una matriz sobre la base del hijo del objeto

Tengo una matriz como:

 [ { "_id": "62434e4c52a870a3840f40fd", "Nome": [ { "_id": "61f76c3c7a308dd136f1d33a", "value": "Oo", "updatedAt": "2022-05-04T00:00:00.000Z" } ], "Peso": [ { "_id": "61f92ec87a308dd136c0e182", "value": "554", "updatedAt": "2022-05-04T00:00:00.000Z" } ], "createdAt": [ { "value": "29/03/2022 03:22:02" } ] }, { "_id": "62449de6ed196e40cb4309ae", "Nome": [ { "_id": "61f76c3c7a308dd136f1d33a", "value": "Ssg", "updatedAt": "2022-05-04T00:00:00.000Z" } ], "Peso": [ { "_id": "61f92ec87a308dd136c0e182", "value": "255", "updatedAt": "2022-05-04T00:00:00.000Z" } ], "createdAt": [ { "value": "29/03/2022 03:23:26" } ] }, ],

Con lo que tengo problemas es con el bucle entre cada objeto ejemplo Nome , Peso ¡los nombres de estas matrices son dinámicos y no tienen un nombre estático!

Ejemplo de lo que estoy pensando:

 [ { "_id": "62434e4c52a870a3840f40fd", "Nome": "Oo", "Peso": "554", "createdAt": "29/03/2022 03:22:02" }, { "_id": "62449de6ed196e40cb4309ae", "Nome": "Ssg", "Peso": "255", "createdAt": "29/03/2022 03:23:26" } ],

gracias por la ayuda

about 4 years ago · Santiago Gelvez
3 Respuestas
Responde la pregunta

0

Si cada conjunto de propiedades Nome , Peso , createdAt siempre tiene un elemento, entonces puede usar Array#map de la siguiente manera:

 const input = [ { "_id": "62434e4c52a870a3840f40fd", "Nome": [ { "_id": "61f76c3c7a308dd136f1d33a", "value": "Oo", "updatedAt": "2022-05-04T00:00:00.000Z" } ], "Peso": [ { "_id": "61f92ec87a308dd136c0e182", "value": "554", "updatedAt": "2022-05-04T00:00:00.000Z" } ], "createdAt": [ { "value": "29/03/2022 03:22:02" } ] }, { "_id": "62449de6ed196e40cb4309ae", "Nome": [ { "_id": "61f76c3c7a308dd136f1d33a", "value": "Ssg", "updatedAt": "2022-05-04T00:00:00.000Z" } ], "Peso": [ { "_id": "61f92ec87a308dd136c0e182", "value": "255", "updatedAt": "2022-05-04T00:00:00.000Z" } ], "createdAt": [ { "value": "29/03/2022 03:23:26" } ] } ]; const output = input.map(({_id,...rest}) => ({ _id, ...Object.fromEntries( Object.entries(rest).map(([k,v]) => [k,v[0].value]) ) })); console.log( output );

about 4 years ago · Santiago Gelvez Denunciar

0

Si considera que esas claves dinámicas tendrán una matriz, intente debajo del código.

 const data = [{ "_id": "62434e4c52a870a3840f40fd", "Nome": [{ "_id": "61f76c3c7a308dd136f1d33a", "value": "Oo", "updatedAt": "2022-05-04T00:00:00.000Z" }], "Peso": [{ "_id": "61f92ec87a308dd136c0e182", "value": "554", "updatedAt": "2022-05-04T00:00:00.000Z" }], "createdAt": [{ "value": "29/03/2022 03:22:02" }] }, { "_id": "62449de6ed196e40cb4309ae", "Nome": [{ "_id": "61f76c3c7a308dd136f1d33a", "value": "Ssg", "updatedAt": "2022-05-04T00:00:00.000Z" }], "Peso": [{ "_id": "61f92ec87a308dd136c0e182", "value": "255", "updatedAt": "2022-05-04T00:00:00.000Z" }], "createdAt": [{ "value": "29/03/2022 03:23:26" }] }, ]; data.map(d => { Object.keys(d).forEach(k => { if (Array.isArray(d[k]) && d[k].length > 0) d[k] = d[k][0].value; }); }); console.log(data);

about 4 years ago · Santiago Gelvez Denunciar

0

La siguiente puede ser una posible solución para lograr el objetivo deseado.

Fragmento de código

 const transformArr = arr => ( arr.map(obj => ({ ...Object.fromEntries( Object.entries(obj) .map(([k, v]) => { if (v && v.length > 0 && Array.isArray(v) && "value" in v[0] ) { return [k, v[0].value] } else { return [k, v] } }) ) })) ); const origArr = [ { "_id": "62434e4c52a870a3840f40fd", "Nome": [ { "_id": "61f76c3c7a308dd136f1d33a", "value": "Oo", "updatedAt": "2022-05-04T00:00:00.000Z" } ], "Peso": [ { "_id": "61f92ec87a308dd136c0e182", "value": "554", "updatedAt": "2022-05-04T00:00:00.000Z" } ], "createdAt": [ { "value": "29/03/2022 03:22:02" } ] }, { "_id": "62449de6ed196e40cb4309ae", "Nome": [ { "_id": "61f76c3c7a308dd136f1d33a", "value": "Ssg", "updatedAt": "2022-05-04T00:00:00.000Z" } ], "Peso": [ { "_id": "61f92ec87a308dd136c0e182", "value": "255", "updatedAt": "2022-05-04T00:00:00.000Z" } ], "createdAt": [ { "value": "29/03/2022 03:23:26" } ] }, ]; console.log(transformArr(origArr));

Explicación

  • Iterar sobre la matriz
  • Utilice Object.entries() y Object.fromEntries() para extraer pares clave-valor [k, v] (como matrices) y luego volver a crear (la matriz de pares clave-valor nuevamente en un) objeto
  • Compruebe si v es una matriz y si tiene un elemento en el índice 0 con un value prop
  • En caso afirmativo, transfórmelo para mostrar solo el value (del elemento índice-0)
  • De lo contrario, simplemente devuelva v tal cual

Restricción

Si la matriz interna (para "Nomo", "Peso" u otras "claves dinámicas") tiene más de un elemento, solo se considerará el value del elemento índice-0.

NOTA

Esta solución no muta la matriz original. Crea una nueva copia y, si es necesario, puede reasignarse a la matriz original.

about 4 years ago · Santiago Gelvez 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