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

162
Visualizações
Comprobación de valores de propiedad duplicados en una matriz de objetos anidados

Tengo un archivo JSON con una matriz que tiene objetos anidados y matrices que simulan un carrito de compras. Quiero verificar si hay valores duplicados y, si los hay, actualizar el valor de la cantidad del artículo; de lo contrario, simplemente agregue los artículos al carrito.

Aquí está el archivo JSON:

 [ { "email": "tshepo@email.com", "status": "OPEN", "items": [ { "name": "hamster", "quantity": 2, "price": 20 }, { "name": "saw dust", "quantity": 1, "price": 20 }, { "name": "hamster-cage", "quantity": 1, "price": 150 }, { "name": "book: how to care for your hamster", "quantity": 1, "price": 150 }, { "name": "hamster-cage", "quantity": 1, "price": 150 } ] } ]

Y esto es lo que he hecho hasta ahora:

 const data = require("./data.json"); function checkIfPresent(key){ let ans = data.findIndex((obj) => Object.values(obj).includes(key)) return ans; } for(let x = 0; x < data.length; x++) { let arr; if(checkIfPresent(data[x].items)){ arr[ans].quantity += data[x].items.quantity; }else{ arr.push(data[x].items); } }

El código no funciona como se supone que debe hacerlo, por favor ayuda.

about 4 years ago · Juan Pablo Isaza
1 Respostas
Responde à pergunta

0

Hubo bastantes errores en su código, los he corregido. Lo que pareció confundirlo más fue que tenía una matriz de un solo elemento, es decir, un objeto, que tiene un miembro de items que también es una matriz. Entonces, necesitábamos referir data[0].items[x] en lugar de data[x] . Además, en su función checkIfPresent verificó si data contienen el elemento, lo que obviamente es cierto. Siempre. En su lugar, deseaba verificar si un artículo con el mismo nombre ya se había procesado, por lo que necesitaba verificar si arr ya tenía este valor. Finalmente, arr se inicializa en cada iteración de su ciclo, lo que elimina todo lo que se almacenó en una iteración anterior y lo hace inaccesible fuera del ciclo. Moví la inicialización fuera del ciclo. Además, dado que sus data tienen una matriz, parece que puede tener varias compras. En cuyo caso, puede envolver otro bucle alrededor del bucle que ya tiene y también el índice principal de data de bucle.

 let data = [ { "email": "tshepo@email.com", "status": "OPEN", "items": [ { "name": "hamster", "quantity": 2, "price": 20 }, { "name": "saw dust", "quantity": 1, "price": 20 }, { "name": "hamster-cage", "quantity": 1, "price": 150 }, { "name": "book: how to care for your hamster", "quantity": 1, "price": 150 }, { "name": "hamster-cage", "quantity": 1, "price": 150 } ] } ] function checkIfPresent(key, array){ let ans = array.findIndex((obj) => obj.name === key) return ans; } let arr = [];var ans; for(let x = 0; x < data[0].items.length; x++) { if((ans = checkIfPresent(data[0].items[x].name, arr)) >= 0){ arr[ans].quantity += data[0].items[x].quantity; }else{ arr.push(data[0].items[x]); } } console.log(arr);

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