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