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

200
Visualizações
Cómo obtener un valor único y un nombre de valor de un archivo JSON sin conocer el nombre del valor

Tengo un bot de discordia y guarda los logros en un archivo JSON. La estructura JSON es así:

 { "784095768305729566": { "coins": 14598, "achievements": { "taking_inventory": true } }, }

El comando debería darle una visión general de los logros que ya tiene.

Quiero crear una incrustación y ejecutar un bucle for para cada elemento secundario de los logros. Si el valor es true , el ciclo for debe tomar el nombre del valor y el valor y agregar un campo a la inserción donde el título del campo es el nombre del valor.

Ahí tengo varios problemas.

  1. No sé cómo obtener nombres de valores y valores. Ya probé Object.keys(...) pero eso da todas las claves y no una por una. No se como sacar los valores.
  2. No sé cómo hacer que el bucle for sea tan largo como todas las subcosas de los achievements .

Lo intenté:

 for(var i = 0; i<datafile[id].achievements.length; i++){...}

pero eso no funcionó.

about 4 years ago · Santiago Gelvez
2 Respostas
Responde à pergunta

0

Puede obtener una matriz de las entradas de un objeto (claves y valores) de Object.entries. Puede filtrar esa matriz para que el valor sea verdadero. Puede asignar el resultado a la clave. Esto le da una serie de claves de logros que tenían el valor "verdadero".

 const datafile = { "784095768305729566": { "coins": 14598, "achievements": { "taking_inventory": true, "other_achievement": false } }, }; const id = "784095768305729566"; const achievements = Object.entries(datafile[id].achievements) .filter(([k, v]) => v) .map(([k, v]) => k); // do something with achievements console.log(achievements);

about 4 years ago · Santiago Gelvez Relatório

0

Puede usar Object.entries que devuelve una matriz de los pares [key, value] de propiedades enumerables con clave de cadena enumerables de un objeto determinado:

 let user = "784095768305729566" let obj = { "784095768305729566": { "coins": 14598, "achievements": { "taking_inventory": true, "another_achievement": true, "yet_another_achievement": false, "and_one_more": true, } }, } let fields = Object.entries(obj[user].achievements) .map(([name, value]) => ({ name, value: value ? '✅' : '❌', inline: false, })) console.log(fields) // or if you only want to include achievements a user already has let onlyTruthyFields = Object.entries(obj[user].achievements) // only where value is truthy .filter(([name, value]) => value) .map(([name, value]) => ({ name, value: '✅', inline: false, })) console.log(onlyTruthyFields)

Y luego simplemente agregue estos a su inserción:

 embed.addFields(fields)
about 4 years ago · Santiago Gelvez 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