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

221
Visualizações
¿Hay alguna manera de usar elementos en una matriz como valores booleanos? Nodo.js

Estoy trabajando en un rastreador de mazmorras en node.js. Quería una forma elegante de realizar un seguimiento de las terminaciones que tiene un usuario. Estaba pensando que sería bueno si pudiera tener una matriz de cada uno de los finales y luego establecer un elemento en verdadero si se logra ese final. Esto facilitaría revisar la lista e imprimir los finales logrados y luego calcular el porcentaje de finalización.

Mi intento de hacer esto:

 var end1 = true var end2 = true var end3 = false var end4 = true var end5 = false var endings = [end1, end2, end3, end4, end5] function listEndings() { console.log("You have found these endings:") var total = 0 for (let i = 0; i < endings.length; i++) { if (endings[i] = true) { console.log(String(endings[i])) total = total + 1 } } console.log(`\nIn total you have ${total}/${endings.length + 1} endings. (${(total/(endings.length + 1))*100}%)`) }

La salida que me gustaría

 You have found these endings: end1 end2 end4 In total you have 3/5 endings. (60%)

¿Es posible utilizar un método como este? ¿Hay otro método que recomendarías?

¡Muchas gracias por la ayuda!

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

0

Creo que es mejor almacenar los valores como una matriz que almacena las terminaciones que el jugador ya ha encontrado:

 let endingsFound = [] const totalEndings = 5 //(as a side note, better use let than var) console.log('Endings found') //suppose we find endings three and four endingsFound.push(3) endingsFound.push(4) endingsFound.forEach((end) => console.log(`Ending ${end}`)) console.log(`In total you have found ${endingsFound.length +1}/${totalEndings}`);

si todavía está decidido a almacenarlo como una matriz de valores booleanos, utilice la siguiente función:

 const indices = arr.reduce( (out, bool, index) => bool ? out.concat(index) : out, [] )

como se presentó aquí para llegar a una serie de terminaciones encontradas y luego hacer lo mismo.

about 4 years ago · Juan Pablo Isaza Relatório

0

Sería fácil y directo usar un object en lugar de una array y usar Object.entries para recorrer la key y el value para obtener el resultado deseado.

 var end1 = true; var end2 = true; var end3 = false; var end4 = true; var end5 = false; var endings = { end1, end2, end3, end4, end5 }; function listEndings() { let count = 0, entries = Object.entries(endings); console.log("You have found these endings:"); for (let [k, v] of entries) { if (v) { console.log(`${k}`); ++count; } } console.log( `In total you have ${count}/${entries.length} endings. (${ (count * 100) / entries.length }%)` ); } listEndings();

about 4 years ago · Juan Pablo Isaza Relatório

0

en este caso, declare la variable de matriz que contiene el objeto. por lo tanto, sus datos son flexibles. puede agregar datos en cualquier momento si necesita alguna condición.

use la función de filtro y mapa para crear una salida como esa

 var endings = [ {"no": 1,"bool": true}, {"no": 2,"bool": true}, {"no": 3,"bool": false}, {"no": 4,"bool": true}, {"no": 5,"bool": false}, {"no": 6,"bool": true}, {"no": 7,"bool": false} ] var result = endings.filter((a)=>a.bool==true) var resultMsg = result.map((a)=> `end${a.no}\n`) var resultVal = parseInt((result.length/endings.length)*100) console.log(`You have found these endings:\n ${resultMsg}`) console.log(`\nIn total you have ${result.length}/${endings.length} endings. (${resultVal}%)`)
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