Soy novato con javascript y encuentro un problema como este.
Por ejemplo . hay una variable con una lista como esta
{ name: 'x', attack: 50, speed: 100, hitpoint: 100, }, { name: 'y', attack: 150, speed: 80, hitpoint: 180, }Encuentra una variable con un ataque = 150 y devuélvela en la función "findAMonsterByAttack" Si no hay una variable coincidente en la lista de variables, la función "findAMonsterByAttack" devuelve nulo.
Aquí está mi código:
function findAMonsterByAttack(monsters) { var monsters = [ { name: 'x', attack: 50, speed: 100, hitpoint: 100, }, { name: 'y', attack: 150, speed: 80, hitpoint: 180, }, // ... ]; var isfree = monsters.every(function(course, index) { return course.attack ===150; });Mi idea es usar el código cada para verificar el curso y el índice, luego regresar si adjunto = 150. Pero fallé. ¿Podrían ayudarme con este caso? Muchas gracias por tu tiempo.
Si los monsters son una matriz, puede usar array.filter para devolver otra matriz con solo los monsters con un criterio coincidente.
por ejemplo attack === 150 .
Tenga en cuenta que podría haber múltiples coincidencias, por lo que esto devolvería una matriz con todos los monsters que coinciden (o una matriz vacía si no hay coincidencias de monsters ).
const monsters = [{ name: 'x', attack: 50, speed: 100, hitpoint: 100, }, { name: 'y', attack: 150, speed: 80, hitpoint: 180, }, { name: 'z', attack: 150, speed: 90, hitpoint: 150, } ] const a150 = monsters.filter(m => m.attack === 150) console.log(a150) Si solo te importa un monster , también puedes usar array.find . Pero esto devolvería el primer monster encontrado e undefined si no se encuentran coincidencias.
const monsters = [{ name: 'x', attack: 50, speed: 100, hitpoint: 100, }, { name: 'y', attack: 150, speed: 80, hitpoint: 180, }, { name: 'z', attack: 150, speed: 90, hitpoint: 150, } ] const a150 = monsters.find(m => m.attack === 150) console.log(a150) Nota: array.every comprueba si todos los monsters cumplen los criterios y devuelve un valor Boolean . En tu ejemplo, esto devolverá false porque todos los monsters no tienen un valor de ataque de 150.
¿Es esto lo que quieres?
function findAMonsterByAttack() { var monsters = [ { name: 'x', attack: 50, speed: 100, hitpoint: 100, }, { name: 'y', attack: 150, speed: 80, hitpoint: 180, } // ... ]; for ( m of monsters ) { if ( m.attack == 150 ) return m } return "Monster with attack 150 not found" } console.log(findAMonsterByAttack())