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

203
Views
Analice un JSON y cree una matriz ordenada a partir de él

Tengo JSON con la siguiente estructura como entrada:

 { "143334": ["VW", "Golf", "Diesel or Gas", "Affordable", "Blue, red or white"], "344389": ["VW", "Passat", "Diesel or Gas", "More expensive"], "484612": ["Audi", "A8", "Diesel", "Premium"], "234234": ["Renault", "Megane", "not too much info"] }

Hay una identificación única como clave, y como valor hay una variedad de marcas, modelos y características.

Lo que se necesita es crear una función de JavaScript que, cuando reciba esta entrada, devuelva como salida una matriz ordenada de marcas y modelos, siendo los modelos otra matriz ordenada de modelo, identificación única y características.

La salida para la entrada anterior debe ser:

 [ { "brand": "Audi", "models": [ { "model": "A8", "id": "484612", "characteristics": ["Diesel", "Premium"] } ] }, { "brand": "Renault", "models": [ { "model": "Megane", "id": "234234", "characteristics": ["not too much info"] } ] }, { "brand": "VW", "models": [ { "model": "Golf", "id": "143334", "characteristics": ["Diesel or Gas", "Affordable", "Blue, red or white"] }, { "model": "Passat", "id": "344389", "characteristics": ["Diesel or Gas", "More expensive"] } ] } ]

En primer lugar, analicé la entrada, luego traté de mapearla como si fuera una matriz para construir el resultado. No tengo ni idea de cómo ordenarlo alfabéticamente por marca y por modelos:

 function doMagic(input) { const result = []; const parsedInput = JSON.parse(input); for (const brand in parsedInput) { result.push({"brand": brand[0], "models": brand[1], "id": brand}); } return result; }
about 4 years ago · Juan Pablo Isaza
2 answers
Answer question

0

Primero debe verificar si la marca ya está en la matriz y (después de crearla) insertar el nuevo modelo en la matriz.

 let json = '{"143334": ["VW", "Golf", "Diesel or Gas", "Affordable", "Blue, red or white"],"344389": ["VW", "Passat", "Diesel or Gas", "More expensive"],"484612": ["Audi", "A8", "Diesel", "Premium"],"234234": ["Renault", "Megane", "not too much info"]}'; function doMagic(json) { let res = []; let arr = JSON.parse(json) Object.keys(arr).forEach(k => { let tempIndex = res.findIndex(r => r.brand === arr[k][0]) if(-1 === tempIndex) { // if the brand isn't in the array yet tempIndex = res.push({ brand:arr[k][0], models:[] })-1 } res[tempIndex].models.push({ "model": arr[k][1], "id": k, "characteristics": arr[k].slice(2) }) }) res.sort((a,b) => a.brand.localeCompare(b.brand)) res.forEach(e => e.models.sort((a,b) => a.model.localeCompare(b.model))) return res } console.log(doMagic(json))

about 4 years ago · Juan Pablo Isaza Report

0

Puedes hacerlo.

 let jsonObj = '{"143334": ["VW", "Golf", "Diesel or Gas", "Affordable", "Blue, red or white"],"344389": ["VW", "Passat", "Diesel or Gas", "More expensive"],"484612": ["Audi", "A8", "Diesel", "Premium"],"234234": ["Renault", "Megane", "not too much info"]}'; function doMagic(input) { const parsedInput = JSON.parse(input); var ids = Object.keys(parsedInput); var mappingObj = {}; for(let id of ids){ if(mappingObj[parsedInput[id][0]]){ mappingObj[parsedInput[id][0]].push({ model:parsedInput[id][1], id:id, characteristics:parsedInput[id].slice(2) }) }else{ mappingObj[parsedInput[id][0]]= [ { model:parsedInput[id][1], id:id, characteristics:parsedInput[id].slice(2) } ] } } var brands = Object.keys(mappingObj) brands.sort(function(a,b){ if(a>b){return 1;} else if(a<b){return -1;} else {return 0;} }) var finalObj = []; for(var i=0;i<brands.length;i++){ mappingObj[brands[i]].sort(function(a,b){ if(a.model>b.model){return 1;} else if(a.model<b.model){return -1;} else {return 0;} }) finalObj.push({ brand:brands[i], models:mappingObj[brands[i]] }) } return finalObj; } console.log(doMagic(jsonObj))
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!