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

99
Views
¿Cómo puedo obtener una salida como [elemento: 'valor1', elemento: 'valor2', ...] en una matriz de objetos en Javascript?

Estoy tratando de convertir un JSON (una lista de países/ciudades del mundo) en una matriz, y lo que intento hacer con la matriz es:

  1. Dejar solo el nombre de los países
  2. Ya que muchos de los países se repiten, solo déjalos una vez

Pude lograr esto gracias a esta función ( solo para aclarar : en el proyecto final, fetchData se importa de otro archivo y la declaración de variables y la matriz están en un document.addEventListener("DOMContentLoaded", async () => {} , este es solo uno con fines de prueba)

 async function fetchData(url) { const response = await fetch(url); return await response.json(); } (async () => { let worldCities = await fetchData( "https://pkgstore.datahub.io/core/world-cities/world-cities_json/data/5b3dd46ad10990bca47b04b4739a02ba/world-cities_json.json" ); const countries = [...new Set(worldCities.map((item) => item.country))]; console.log(countries); })();
 .as-console-wrapper { max-height: 100% !important; top: 0; }

Con fetchData, solicito un recurso de forma asíncrona (la URL del archivo .json), luego mapeo una matriz con el archivo y lo "filtro" como mencioné anteriormente

Pero el problema es que funciona, pero no como se necesita, porque la salida debería ser así

resultado deseado

y mi salida es solo una matriz de nombres de países

Sé que estoy mapeando (solo) el valor actual requerido con worldCities.map((item) => item.country) y eliminando valores repetidos con [...new Set()]

Pero, ¿cómo podría hacer que la matriz devuelva un objeto como pares clave/valor [country: 'country1', country: 'country2', ...] (o algo similar a la salida de la imagen) en lugar de la matriz normal ['country1', 'country2', ...] ?

Cualquier ayuda es bienvenida, muchas gracias!

about 4 years ago · Juan Pablo Isaza
2 answers
Answer question

0

map() de nuevo:

 const countries = [...new Set(worldCities.map((item) => item.country))].map(country => ({ country }))

Solución de trabajo:

 async function fetchData(url) { const response = await fetch(url); return await response.json(); } (async () => { let worldCities = await fetchData( "https://pkgstore.datahub.io/core/world-cities/world-cities_json/data/5b3dd46ad10990bca47b04b4739a02ba/world-cities_json.json" ); const countries = [...new Set(worldCities.map((item) => item.country))].map(country => ({ country })) console.log(countries); })();
 .as-console-wrapper { max-height: 100% !important; top: 0; }

about 4 years ago · Juan Pablo Isaza Report

0

Al darle el enfoque a continuación, puede lograr obtener una variedad de nombres de países únicos. Si desea una matriz de objetos de país, puede convertir la matriz de nombres.

 $.get('https://pkgstore.datahub.io/core/world-cities/world-cities_json/data/5b3dd46ad10990bca47b04b4739a02ba/world-cities_json.json', function(data) { var res = JSON.parse(data) var countries = res.map(function(elem){return elem.country}); const uniques = Array.from(new Set(countries)); console.log(uniques) });
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!