Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

141
Visualizações
Devolución de objeto JSON de una matriz de objetos que contiene las claves y sus valores

Boris tiene una lista de todas las cervezas disponibles en su pub, pero es un gran lío. Le gustaría ver las cervezas agrupadas por marcas. Boris también le dijo que la función debería devolver una matriz de objetos que contenga el nombre de la marca y una matriz de ID de cerveza de esa marca.

Archivo JSON con datos: https://challenge.codingsans.com/beers.json

Ejemplo de salida:

 [ { "brand": "brandName2", "beers": [ "beerID3", "beerID4" ] }, { "brand": "brandName1", "beers": [ "beerID2", "beerID1" ] } ]

//

Hice esto: (Así que básicamente nada. Solo me gustaría tener una idea de cómo resolverlo).

 request = new XMLHttpRequest; request.open('GET', 'https://challenge.codingsans.com/beers.json', true); var data = []; request.onload = function() { if (request.status >= 200 && request.status < 400) { // Date Parse data = JSON.parse(request.responseText); // Success! // Arrays var beerIDs = []; var beerBrand = []; // Iteration for (var key in data) { beerIDs.push(data[key].id); beerBrand.push(data[key].brand); // console.log(beerIDs); // console.log(beerBrand); } console.log(beerIDs); console.log(beerBrand); //final list var finalList = []; } else { // We reached our target server, but it returned an error } }; request.onerror = function() { // There was a connection error of some sort }; request.send();
about 4 years ago · Juan Pablo Isaza
3 Respostas
Responde à pergunta

0

Prueba esto:

 request = new XMLHttpRequest; request.open('GET', 'https://challenge.codingsans.com/beers.json', true); var data = []; request.onload = function() { if (request.status >= 200 && request.status < 400) { // Date Parse data = JSON.parse(request.responseText); // Success! const organizedBeers = data.reduce((acc, beers) => { const findIndex = acc.findIndex(beer => beer.brand === beers.brand) if(findIndex > -1) { acc[findIndex].beersId.push(beers.id) } else { acc.push({ brand: beers.brand, beersId: [beers.id], }) } return acc; }, []) console.log(organizedBeers) } else { // We reached our target server, but it returned an error } }; request.onerror = function() { // There was a connection error of some sort }; request.send();
about 4 years ago · Juan Pablo Isaza Relatório

0

Básicamente, puede crear una nueva matriz que será el resultado final (en nuestro caso, digamos 'aBeerNBrands'). Y puede insertar un nuevo objeto con las propiedades requeridas (como 'marca': cadena, ids: matriz) allí. Y luego puede recorrer el elemento de la matriz principal (en su caso: 'datos') y en el bucle anidado puede verificar si ese objeto de marca está presente en la nueva matriz ('aBeerNBrands') o no, si está presente, entonces presione la identificación a la matriz de ids presente dentro del objeto de aBeerNBrands; de lo contrario, cree un nuevo objeto dentro de 'aBeerNBrands' con las propiedades requeridas. El siguiente código funciona bien para su requerimiento.

 request = new XMLHttpRequest; request.open('GET', 'https://challenge.codingsans.com/beers.json', true); var data = []; request.onload = function() { debugger; if (request.status >= 200 && request.status < 400) { // Date Parse data = JSON.parse(request.responseText); // Success! // Arrays var aBeerNBrands = []; // Iteration for (var key in data) { if(aBeerNBrands.length > 0){ for(var key2 in aBeerNBrands){ if(aBeerNBrands[key2].brand === data[key].brand){ aBeerNBrands[key2].ids.push(data[key].id); break; } if(key2 == aBeerNBrands.length - 1 && aBeerNBrands[key2].brand !== data[key].brand){ var oBrandObject = { brand: data[key].brand, ids: [data[key].id] }; aBeerNBrands.push(oBrandObject); } } } else{ var oBrandObject = { brand: data[key].brand, ids: [data[key].id] }; aBeerNBrands.push(oBrandObject); } // console.log(beerIDs); // console.log(beerBrand); } console.log(aBeerNBrands); } else { // We reached our target server, but it returned an error } }; request.onerror = function() { // There was a connection error of some sort }; request.send();
about 4 years ago · Juan Pablo Isaza Relatório

0

Siga los pasos a continuación:

  • Agrupar la matriz de entrada de objetos por marca y dar como resultado un objeto usando el método Array.reduce().
  • Estructurar la salida en base al objeto de marca reducido que tenemos.

Demostración de trabajo:

 const data = [ { "id": "ccw-1", "name": "Coding Challenge White", "brand": "Coding Challenge Brewery" }, { "id": "sw-1", "name": "Share White", "brand": "Share", }, { "id": "bspa-1", "name": "Beer Sans Pale Ale", "brand": "Beer Sans Brewery" }, { "id": "ccb-1", "name": "Coding Challenge Brown", "brand": "Coding Challenge Brewery" }, { "id": "ccw-2", "name": "Coding Challenge Wheat", "brand": "Coding Challenge Brewery" }]; // result array const resultArr = []; // grouping by brand and resulting with an object using Array.reduce() method const groupByBrand = data.reduce((group, item) => { const { brand } = item; group[brand] = group[brand] ?? []; group[brand].push(item.id); return group; }, {}); // Finally structuring the output based on the brand object we have. Object.keys(groupByBrand).forEach((item) => { resultArr.push({ 'brand': item, 'beers': groupByBrand[item] }) }) // Result console.log(resultArr);

about 4 years ago · Juan Pablo Isaza Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda