Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

110
Views
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 answers
Answer question

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 Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!