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

108
Vistas
Intentando devolver el valor de una matriz de objetos con dos claves iguales a una función. JS Rock papel tijera spock lagarto juego

Aquí está la const que contiene la matriz de objetos:

 const SELECTIONS = [{
 name: 'fire',
 emoji: '🔥',
 beats: 'air',
 beats: 'lizard'
 },
 {
 name: 'water',
 emoji: '🌊',
 beats: 'spock',
 beats: 'fire'

 },
 {
 name: 'air',
 emoji: '💨',
 beats: 'water',
 beats: 'lizard',
 },
 {
 name: 'lizard',
 emoji: '🦎',
 beats: 'air',
 beats: 'spock',
 },
 {
 name: 'spock',
 emoji: '🧛‍♂️',
 beats: 'fire',
 beats: 'water',
 },
];

Aquí está la función que devuelve el ganador al comparar los valores clave/propiedad de la selección del jugador y la computadora

 function isWinner(selection, opponentSelection) {
 return selection.beats === opponentSelection.name
}

Agregué un par al objeto ya que tomé un juego de papel, piedra y tijera y lo convertí en un juego de papel, piedra, tijera, spock y lagarto.

O al menos lo he intentado...

Quiero que la función compare ambos 'beats'. He intentado reescribir el objeto y la función sin éxito.

¿Alguien tiene una pista?

almost 4 years ago · Santiago Trujillo
1 Respuestas
Responde la pregunta

0

Tus objetos no van a funcionar como los tienes, ya que no puedes tener dos propiedades con el mismo nombre. es decir, no puede tener dos beats de tiempo en el mismo objeto porque el segundo sobrescribirá al primero. p.ej

 {
 name: 'fire',
 emoji: '🔥',
 beats: 'air',
 beats: 'lizard'
}

en realidad será

 {
 name: 'fire',
 emoji: '🔥',
 beats: 'lizard'
}

Porque los beats se están configurando para lizard al final.

Para solucionarlo, ¿por qué no poner sus beats como una array esa manera puede actualizar fácilmente su método isWinner para hacer lo que quiera usando includes para ver si el elemento está incluido en la array de beats ?

Por ejemplo.

 const SELECTIONS = [{
 name: 'fire',
 emoji: '🔥',
 beats: ['air', 'lizard']
 },
 {
 name: 'water',
 emoji: '🌊',
 beats: ['spock', 'fire']

 },
 {
 name: 'air',
 emoji: '💨',
 beats: ['water', 'lizard']
 },
 {
 name: 'lizard',
 emoji: '🦎',
 beats: ['air', 'spock']
 },
 {
 name: 'spock',
 emoji: '🖖',
 beats: ['fire', 'water']
 },
];


function isWinner(selection, opponentSelection) {
 return selection.beats.includes(opponentSelection.name);
}

const fire = SELECTIONS[0];
const lizard = SELECTIONS[3];
const spock = SELECTIONS[4];

console.log(isWinner(fire, lizard)); // true
console.log(isWinner(lizard, fire)); // false
console.log(isWinner(lizard, spock)); // true
console.log(isWinner(spock, fire)); // true 

// etc...

almost 4 years ago · Santiago Trujillo 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