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

395
Views
¿Cómo ordenar el archivo Json según el valor del objeto?

Tengo debajo del archivo json llamado all, y contengo los datos a continuación

 [{"name":{"common":"Dominican Republic","official":"Dominican Republic","nativeName":{"spa":{"official":"República Dominicana","common":"República Dominicana"}}},"region":"Americas","area":48671.0,"flags":{"png":"https://flagcdn.com/w320/do.png","svg":"https://flagcdn.com/do.svg"}},{"name":{"common":"Heard Island and McDonald Islands","official":"Heard Island and McDonald Islands","nativeName":{"eng":{"official":"Heard Island and McDonald Islands","common":"Heard Island and McDonald Islands"}}},"region":"Antarctic","area":412.0,"flags":{"png":"https://flagcdn.com/w320/hm.png","svg":"https://flagcdn.com/hm.svg"}},{"name":{"common":"Ghana","official":"Republic of Ghana","nativeName":{"eng":{"official":"Republic of Ghana","common":"Ghana"}}},"region":"Americas","area":238533.0,"flags":{"png":"https://flagcdn.com/w320/gh.png","svg":"https://flagcdn.com/gh.svg"}}]

Quiero ordenar este archivo según el nombre. El valor oficial, escribí los códigos a continuación, pero no funciona. ¿Cómo puedo lograr eso?

 const path = "../all.json; getCuntries(path); async function getCuntries(path) { const response = await fetch(path); const scrampled = await response.json(); const parsed = await JSON.parse(JSON.stringify(scrampled)); const data = parsed.sort(GetSortOrder("name")); console.log(data) } function GetSortOrder(prop) { return function(a, b) { if (a[prop][1] > b[prop][1]) { return 1; } else if (a[prop][1] < b[prop][1]) { return -1; } return 0; } }
about 4 years ago · Juan Pablo Isaza
2 answers
Answer question

0

Su método de comparación está un poco desordenado. En primer lugar, la comparación de cadenas con operadores > y < puede generar un comportamiento inesperado a veces y esta no es la forma recomendada de comparar cadenas. Y segundo (que es probablemente la causa principal), debe acceder a los valores de los objetos con sus claves y no con índices (como lo está haciendo con [1] ). Esto debería funcionar: conviértalo en el cuerpo de la function (a, b) :

 const aPassedProp = a[prop]; const bPassedProp = b[prop]; return aPassedProp.official.localeCompare(bPassedProp.official);

El método localeCompare puede comparar sus cadenas de forma adecuada: puede obtener más información aquí .

about 4 years ago · Juan Pablo Isaza Report

0

No puede acceder a una clave de objeto por índice. Como no se especifica si la clave del objeto debe ser dinámica, aquí hay una solución simple donde no lo es:

 const data = [ { "name": { "official": "Republic of Ghana"} }, { "name": { "official": "Heard Island and McDonald Islands" } }, { "name": { "official": "Dominican Republic" } }, ]; // shortened for readability const sortArray = (a, b) => { const aCompare = a.name.official; const bCompare = b.name.official; if (aCompare === bCompare) { return 0; } return aCompare < bCompare ? -1 : 1; }; data.sort(sortArray); console.log(data);

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!