JavaScript - Ejercicio fácil utilizando switch

 
Vista:

Ejercicio fácil utilizando switch

Publicado por Dani (6 intervenciones) el 16/06/2021 13:53:45
Buenas a todos soy Dani, nuevo en el foro, alguien me puede decir porque me pasa lo siguiente:
Estoy haciendo un ejercicio con switch muy fácil, pero hay una cosa que no logro comprender, os paso el anunciado, el código y os comento.

ejercicio 2:

Determina el resultado de las cinco operaciones matemáticas realizadas con los elementos numéricos

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
let lista=[true, 5, false,"daniel","corre",2]
 
 
 
for (x in lista) {
 
    switch (x){
 
        case x = 1:
 
        console.log(lista[1]+lista[5]+ " resultado")
 
        break;
        case x = 2:
 
        console.log(lista[1]-lista[5] + " resultado")
 
        break;
        case x = 3:
 
        console.log(lista[1]*lista[5] + " resultado")
 
        break;
        case x=4:
 
        console.log(lista[1]/lista[5] + " resultado")
 
        break;
 
    }
}

El caso es que así no me funciona, pero si creo una variable entre el for y el switch llamada i e incremento x ya funciona y no se porqué.
En que influye esa variable para que el código funcione o es porque incremento x, pero si x ya se incrementa con el for no?

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
let lista=[true, 5, false,"daniel","corre",2]
 
 
 
for (x in lista) {
 
   let i=x++;
 
    switch (x){
 
        case x = 1:
 
        console.log(lista[1]+lista[5]+ " resultado")
 
        break;
        case x = 2:
 
        console.log(lista[1]-lista[5] + " resultado")
 
        break;
        case x = 3:
 
        console.log(lista[1]*lista[5] + " resultado")
 
        break;
        case x=4:
 
        console.log(lista[1]/lista[5] + " resultado")
 
        break;
 
    }
}
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 joel
Val: 3.506
Oro
Ha mantenido su posición en JavaScript (en relación al último mes)
Gráfica de JavaScript

Ejercicio fácil utilizando switch

Publicado por joel (895 intervenciones) el 16/06/2021 19:18:53
Hola Dani, he tenido que poner los números entre comillas para que funcione...

Aquí esta el código funcionando.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
let lista=[true, 5, false,"daniel","corre",2];
 
 
 
for (x in lista) {
    switch (x){
        case x = "1":
 
            console.log(lista[1]+lista[5]+ " resultado")
 
            break;
        case x = "2":
 
            console.log(lista[1]-lista[5] + " resultado")
 
            break;
        case x = "3":
 
            console.log(lista[1]*lista[5] + " resultado")
 
            break;
        case x="4":
 
            console.log(lista[1]/lista[5] + " resultado")
 
            break;
 
    }
}
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
sin imagen de perfil
Val: 13
Ha aumentado su posición en 177 puestos en JavaScript (en relación al último mes)
Gráfica de JavaScript

Ejercicio fácil utilizando switch

Publicado por Davit (19 intervenciones) el 16/06/2021 20:24:10
Hola Joel,

le he echado un ojo antes al código de Dani y la verdad es que yo tampoco entiendo por qué sí funciona añadiendo un: "let i = x++;"
si haces console.log(x) en ambos casos te devuelve los índices en formato numérico
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
Imágen de perfil de joel
Val: 3.506
Oro
Ha mantenido su posición en JavaScript (en relación al último mes)
Gráfica de JavaScript

Ejercicio fácil utilizando switch

Publicado por joel (895 intervenciones) el 17/06/2021 10:41:26
Hola Davit, esta linea, no tienes ningún sentido
1
let i=x++;
ya que no utilizamos la variable "i" en ningun lado... es lo mismo que poner
1
x++;

Al incrementar un valor que es una cadena, lo convierte a numero...
1
2
a="1";
a++; // 1 -> pasa a ser numerico

La verdad es que no lo habia visto nunca...
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
sin imagen de perfil
Val: 13
Ha aumentado su posición en 177 puestos en JavaScript (en relación al último mes)
Gráfica de JavaScript

Ejercicio fácil utilizando switch

Publicado por Davit (19 intervenciones) el 17/06/2021 23:13:45
me tiene un poco desconcertado la verdad, no se supone que de por si debería devolverlo en formato numérico? Igual es ahí donde estoy equivocado

gracias por tu respuesta Joel
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
sin imagen de perfil
Val: 13
Ha aumentado su posición en 177 puestos en JavaScript (en relación al último mes)
Gráfica de JavaScript

Ejercicio fácil utilizando switch

Publicado por Davit (19 intervenciones) el 18/06/2021 18:52:50
Toda la razón, 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

Ejercicio fácil utilizando switch

Publicado por Dani (6 intervenciones) el 17/06/2021 06:36:06
Gracias Joel, así si que funciona, pero me podrías decir porque con la variable si que funciona, cual es la diferencia entre incrementar con for y sumándose a si misma ??
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
Imágen de perfil de joel
Val: 3.506
Oro
Ha mantenido su posición en JavaScript (en relación al último mes)
Gráfica de JavaScript

Ejercicio fácil utilizando switch

Publicado por joel (895 intervenciones) el 17/06/2021 10:43:08
Hola Dani, mira la respuesta de encima que le he dado a Davit... si tienes cualquier duda...
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
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

Ejercicio fácil utilizando switch

Publicado por Gio (79 intervenciones) el 21/06/2021 07:17:55
Hola Dani, cuando trabajas con un ciclo "for" haciendo uso de "in" dentro de sus paréntesis, la variable local del ciclo (en el siguiente caso es "b") no será de tipo numérico, mas bien será de tipo string, desconozco por que es así. Por ejemplo:

1
2
3
4
5
let a = [ 1, 3, "Texto", false ]
 
for(b in a){
    //AQUI DENTRO, EL VALOR DE b SERÁ UNA CADENA DE TEXTO
}


Algo que puedes hacer, es usar la función parseInt() (esta funcion transforma los strings a valores de tipo numerico ignorando parte decimales, mas info en: https://developer.mozilla.org/es/docs/Web/JavaScript/Reference/Global_Objects/parseInt) de la siguiente forma dentro del ciclo for:

1
2
3
4
5
6
let a = [ 1, 3, "Texto", false ]
 
for(b in a){
    b=parseInt(b)
    //EL RESTO DE TU CODIGO AQUI
}
En ese caso, la variable local "b" si será de tipo numérico dentro del ciclo for.


En resumen, tu código quedaría así:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
let lista=[true, 5, false,"daniel","corre",2]
 
 
 
for (x in lista) {
 
    x=parseInt(x)
 
    switch (x){
 
        case x = 1:
 
        console.log(lista[1]+lista[5]+ " resultado")
 
        break;
        case x = 2:
 
        console.log(lista[1]-lista[5] + " resultado")
 
        break;
        case x = 3:
 
        console.log(lista[1]*lista[5] + " resultado")
 
        break;
        case x=4:
 
        console.log(lista[1]/lista[5] + " resultado")
 
        break;
 
    }
}


Espero que mi aporte sea de utilidad, saludos!
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