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

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

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 Denunciar

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 Denunciar

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