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

127
Vistas
Cómo reemplazar accesorios de objeto dentro de la matriz con otro objeto

Tengo una serie de objetos como este:

 let arr1 = [{ "ref": 1, "index": "300", "data": { "id": 10, "status": { "code": "red" } } }, { "ref": 2, "index": "301", "data": { "id": 20, "status": { "code": "blue" } } }];

Quiero reemplazar el código de estado por el dado en esta otra matriz de objetos:

 let arr2 = [{ "id": 10, "content": { "name": "green" } }, { "id": 20, "content": { "name": "yellow" } }];

Mi idea es mapear la primera matriz y usar la función de búsqueda (o filtro) para recorrer la segunda matriz y cuando la coincidencia de ID cambia los valores, pero me falta algo, ¿cómo puedo hacer esto de la manera más optimizada para el rendimiento y la legibilidad? ¿camino?

 let res: any[]; res = arr2.map((x: any) => arr1.find((y: any) => (y.data.id === x.id) ? 'logic if match' : 'return' ));
about 4 years ago · Juan Pablo Isaza
1 Respuestas
Responde la pregunta

0

Primero cambiaría el formato de arr2 de tal manera que sea más fácil acceder a dicho formato: (Si puede cambiar fácilmente cómo obtiene estos datos, creo que sería mejor. De lo contrario, transforme los datos como se muestra a continuación. )

 const idStatusCodeMap = { "10": "green", "20": "yellow" }

Hacemos esto para poder ver si hay idStatusCodeMap[10] o idStatusCodeMap[anyId] . Esto hace posible que solo realice un bucle a través de arr1 , no un bucle anidado para arr1 y arr2 . Luego, arr1 y reemplace los colores si es necesario. Si se supone que no se encuentra un nuevo color en idStatusCodeMap , como para id = 30 , entonces no haga nada al respecto.

 let arr1 = [{ "ref": 1, "index": "300", "data": { "id": 10, "status": { "code": "red" } } }, { "ref": 2, "index": "301", "data": { "id": 20, "status": { "code": "blue" } } }]; let arr2 = [{ "id": 10, "content": { "name": "green" } }, { "id": 20, "content": { "name": "yellow" } }]; let idStatusCodeMap = {} //transpiling arr2 to more performant hashMap arr2.forEach(item => { idStatusCodeMap[item.id] = item.content.name; }) console.log(idStatusCodeMap); arr1 = arr1.map(item => { //if the id of an item in arr1 is found in code map, replace it with new value. //if not found, it will skip. if(idStatusCodeMap[item.data.id]) { item.data.status.code = idStatusCodeMap[item.data.id] } return item; }) console.log(arr1);

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