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

152
Vistas
No se puede combinar la matriz de objetos

Hola, estoy tratando de combinar dos matrices, pero ¿por qué el resultado solo muestra el nombre del personal y el resto no está definido?

 let cuba2 = []; let cuba3 = []; let staff = [ {name:"tim", postcode:"68100",counter:0}, {name:"sam", postcode:"43500",counter:0}, {name:"apu", postcode:"55100",counter:0} ]; let cuba2 = [ {fsm:"111", postcode:"68100"}, {fsm:"222", postcode:"55555"}, {fsm:"333", postcode:"66666"} ]; cuba2.forEach(data => { staff.forEach(assign => { if(data.postcode == assign.postcode{ cuba3.push({ fsm:data.FSM, postcode: data.POSCODE, staff:assign.name }); } }); }); console.log(cuba3);
about 4 years ago · Juan Pablo Isaza
2 Respuestas
Responde la pregunta

0

No está perfectamente claro a partir de su código si realmente quería que la matriz de resultados fuera la combinación perfecta de las dos matrices de entrada usando el código postal clave para la coincidencia.

Por cierto, eso es lo que esta demostración intenta lograr:

recorre las dos matrices staff y cuba2 , produciendo una tercera matriz cuba3 que tiene elementos que tienen el mismo postcode y que contiene la propiedad fsm del elemento cuba y la propiedad staff del elemento staff :

 let staff = [ {name:"tim", postcode:"68100",counter:0}, {name:"sam", postcode:"43500",counter:0}, {name:"apu", postcode:"55100",counter:0} ]; let cuba2 = [ {fsm:"111", postcode:"68100"}, {fsm:"222", postcode:"55555"}, {fsm:"333", postcode:"66666"} ]; let cuba3 = []; //for each staffItem in staff for(let staffItem of staff){ //for each cubaItem in cuba2 for(let cubaItem of cuba2){ //if an item in cuba2 was found matching staffItem.postCode if(cubaItem.postcode == staffItem.postcode) { //push a new item in cuba3 with a mix of properties coming both from cubaItem and staffItem cuba3.push({ fsm: cubaItem.fsm, postcode: cubaItem.postcode, staff: staffItem.name }); //since the corresponding cubaItem was found, skip to the next iteration of staffItem continue; } } } console.log(cuba3); /* The result will be an array with lenght == 1 because the two sets will interesect only for postcode == '68100' [ { fsm: "111" postcode: "68100" staff: "tim" } ] */

about 4 years ago · Juan Pablo Isaza Denunciar

0

Aquí puedes hacerlo de dos maneras diferentes.

  1. Puede recorrer la primera matriz y dentro de ese ciclo puede recorrer la otra matriz

 let cuba3 = []; let staff = [ {name:"tim", postcode:"68100",counter:0}, {name:"sam", postcode:"43500",counter:0}, {name:"apu", postcode:"55100",counter:0} ]; let cuba2 = [ {fsm:"111", postcode:"68100"}, {fsm:"222", postcode:"55555"}, {fsm:"333", postcode:"66666"} ]; cuba2.forEach(cuba => { staff.forEach(assign => { if (cuba.postcode == assign.postcode) { cuba3.push({ fsm: cuba.fsm, postcode: cuba.postcode, staff: assign.name }); } }) }); console.log(cuba3);

Sin embargo, el primero no es muy eficiente. Tiene bucles anidados. Podemos usar hashmaps (u objetos) en JavaScript como los siguientes:

 const cuba3 = []; let staff = [ {name:"tim", postcode:"68100",counter:0}, {name:"sam", postcode:"43500",counter:0}, {name:"apu", postcode:"55100",counter:0} ]; let cuba2 = [ {fsm:"111", postcode:"68100"}, {fsm:"222", postcode:"55555"}, {fsm:"333", postcode:"66666"} ]; const staffPostcodes = {}; for (let i=0; i < staff.length; i++) { staffPostcodes[staff[i].postcode] = staff[i].name; } for (let i=0; i < cuba2.length; i++) { if (!staffPostcodes[cuba2[i].postcode]) { continue; } cuba3.push({ fsm: cuba2[i].fsm, postcode: cuba2[i].postcode, staff: staffPostcodes[cuba2[i].postcode] }); } console.log(cuba3);

Este generará el mismo resultado pero mucho más rápido cuando la matriz se vuelva muy grande.

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