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

163
Vistas
Mover clave/valor en la matriz de objetos a otra matriz por elemento coincidente

Tengo dos matrices con objetos que contienen países y su código de país. Una de las matrices tiene los países en inglés y también tiene una clave con el código iso del país. Parece que:

 [{ "name": "Denmark", "dialCode": "+45", "isoCode": "DK", }, { "name": "Germany", "dialCode": "+49", "isoCode": "DE", }]

La otra matriz tiene los nombres de los países en danés y el código de marcación pero sin el código iso.

 [{ "name": "Danmark", "dialCode": "+45", }, { "name": "Tyskland", "dialCode": "+49", }]

Ahora quiero mover/copiar el isoCode de la matriz en inglés al danés, que coincida con el dialCode. Pero estoy un poco perdido en cómo hacer esto.

tengo una coincidencia con esto

 let result = this.dkList.filter(country1 => this.countryList.some(country2 => country2.dialCode === country1.dialCode.replace('00 ', '+').trim()))

Mi resultado esperado debería ser

 [{ "name": "Danmark", "dialCode": "+45", "isoCode": "DK" }, { "name": "Tyskland", "dialCode": "+49", "isoCode": "DE" } ]
about 4 years ago · Juan Pablo Isaza
3 Respuestas
Responde la pregunta

0

El método .filter() se usa para eliminar elementos de una matriz, que no es lo que está buscando hacer aquí, sino que está buscando mapear (es decir, transformar) sus datos.

Primero puede crear un Mapa llamado isoLookup desde su primera matriz que crea claves basadas. en el dialCode y los valores basados en el isoCode en su matriz. Luego puede usar este Mapa para obtener el código ISO usando un dialCode . Una vez que haya creado la búsqueda de mapa, puede usar .map() en su segundo arr2 para asignar sus objetos a nuevos objetos con una propiedad isoCode , que contiene un valor obtenido de la búsqueda de mapa:

 const arr1 = [{ "name": "Denmark", "dialCode": "+45", "isoCode": "DK", }, { "name": "Germany", "dialCode": "+49", "isoCode": "DE", }]; const arr2 = [{ "name": "Danmark", "dialCode": "+45", }, { "name": "Tyskland", "dialCode": "+49", }]; const isoLookup = new Map(arr1.map(obj => [obj.dialCode, obj.isoCode])); const res = arr2.map(obj => ({...obj, isoCode: isoLookup.get(obj.dialCode)})); console.log(res);

La creación de un mapa para que sirva como una búsqueda permite que su código se escale bien, en lugar de realizar la búsqueda a través de arr1 para cada iteración de su método .map() .

about 4 years ago · Juan Pablo Isaza Denunciar

0

Simplemente revise todos los elementos de la matriz, compare sus dialCodes y copie los isoCodes a la versión danesa.

 const en = [...]; // array with english data const den = [...]; // array with danish data // it will work if en.length = den.length for (let i = 0; i < en.length; i++) { if (den[i].dialCode === en[i].dialCode) { // compare en & den dial codes den[i].isoCode = en[i].isoCode; } }
about 4 years ago · Juan Pablo Isaza Denunciar

0

Debido a que ambas listas contienen dialCode : con Array.prototype.reduce() puede crear un hash de arr1 basado en la propiedad dialCode y finalmente obtener el resultado de la lista Array.prototype.map() arr2

Código:

 const arr1 = [{name: 'Denmark',dialCode: '+45',isoCode: 'DK',},{name: 'Germany',dialCode: '+49',isoCode: 'DE'}] const arr2 = [{name: ' Danmark',dialCode: '+45',},{name: 'Tyskland',dialCode: '+49'}] const hash = arr1.reduce((a, c) => ((a[c.dialCode] = c.isoCode), a), {}); const restult = arr2.map(c => ({ ...c, isoCode: hash[c.dialCode] })); console.log(restult);

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