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