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

191
Vistas
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 Respuestas
Responde la pregunta

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 Denunciar

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 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