Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

176
Views
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 answers
Answer question

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 Report

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 Report

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 Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!