JavaScript - Hacer un array con todas las cartas de una baraja de poker, consu valor y palo

 
Vista:

Hacer un array con todas las cartas de una baraja de poker, consu valor y palo

Publicado por principiante (4 intervenciones) el 24/03/2021 21:58:17
Buenas, estoy haciendo un curso de introducción a este código y a la hora de hacer un ejercicio no soy capaz de terminarlo bien.
El ejercicio sería hacer un array con todas las cartas de una baraja de poker, consu valor y palo.
Despues, usando ese array crear otras dos separando rojas y negras.
El caso está en que no consigo hacer que me reconozca la propiedad palo.
dejo aqui en código que tengo:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
var baraja = [];
var palos = ["c", "p", "t", "d"];
for (var i = 0; i< palos.length; i++ ){
     for (var  j = 1; j<=12; j++){
          baraja[baraja.length] = {p:palos[i], v:j};
    }
 
}
var rojas = [];
var negras = [];
for (var i=0; i<=baraja.length; i++); {
    if (baraja[i].p==="c" || baraja[i].p==="d") {
       rojas[rojas.length] = baraja[i];
  }
   else {
       negras[negras.length] = baraja[i];
   }
}
Y este es el error que me dice la consola:
1
Uncaught TypeError: Cannot read property 'p' of undefined

Si alguien me puede echar una mano se lo agradezco. El curso es uno gratuito online y no tiene ningún soporte de ayuda.

Gracias!
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de Gio
Val: 368
Bronce
Ha aumentado 1 puesto en JavaScript (en relación al último mes)
Gráfica de JavaScript

Hacer un array con todas las cartas de una baraja de poker, consu valor y palo

Publicado por Gio (79 intervenciones) el 25/03/2021 02:18:15
En la línea 11 de tu código, se te escapó un punto y coma ( ; ) entre el paréntesis de cierre del ciclo for y su llave de apertura. También la comparación de ese ciclo for está mal ( i<=baraja ) tienes que poner i<baraja sin el símbolo de igual ( = ) quedando solo el símbolo de menor que ( < ).

El código solucionado quedaría así:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
var baraja = [];
var palos = ["c", "p", "t", "d"];
for (var i = 0; i< palos.length; i++ ){
     for (var  j = 1; j<=12; j++){
          baraja[baraja.length] = {p:palos[i], v:j};
    }
 
}
var rojas = [];
var negras = [];
for (var i=0; i<baraja.length; i++) {
    if (baraja[i].p==="c" || baraja[i].p==="d") {
       rojas[rojas.length] = baraja[i];
  }
   else {
       negras[negras.length] = baraja[i];
   }
}

Consejo: al poner en ejecución un código, el navegador te suele indicar a la derecha del mensaje de error, el nombre del archivo donde se produjo y la línea donde se encuentra. Por ejemplo:
http://gio.rf.gd/Imagenes/MensajeError.png
En este caso el error realmente se produjo en la línea 11 pero el compilador lo detecta en el 12, esto suele ocurrir cuando se te escapa un punto y coma, hace que el error suceda en la siguiente línea. Pero la mayoría de errores ocurren donde se especifica.

Espero que ahora esté todo solucionado. Ánimo con ese curso!
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
2
Comentar

Hacer un array con todas las cartas de una baraja de poker, consu valor y palo

Publicado por principiante (4 intervenciones) el 25/03/2021 02:30:44
Muchas gracias! Justo acabo de repasarme todo y decidí hacer el ejercicio desde cero y consegui que esta vez ma saliese bien. Gracias!!
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar