JavaScript - ¡Necesito ayuda con una función!

 
Vista:
sin imagen de perfil

¡Necesito ayuda con una función!

Publicado por El Menda Lerenda (40 intervenciones) el 12/10/2021 15:22:48
Tengo que realizar un ejercicio para clase de informática en la que debo crear una función que me devuelva si existe un número par en un array, mi código es:

1
2
3
4
5
6
7
8
9
existPar = (array) => {
    for(let nums of array){
        if (nums % 2 == 0){
            return nums;
        }
    }
}
let arrayNums = [1, 10, 2, 20, 3, 30];
console.log(existPar(arrayNums));

El problema está en que cuando detecta que hay un número par el bucle se detiene, ¿cómo evitar eso?
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 7aamin
Val: 9
Ha aumentado su posición en 6 puestos en JavaScript (en relación al último mes)
Gráfica de JavaScript

¡Necesito ayuda con una función!

Publicado por 7aamin (79 intervenciones) el 12/10/2021 16:01:11
El error está en que estas poniento return dentro del ciclo if, cuando usas return le dices a la funcion que termine.
En vez de usar return dentro del ciclo if, podrias usarlo afuera, o mejor no usarlo sino usar alguna otra cosa:

1
2
3
4
5
6
7
8
9
10
let existPar = (array) => {
  let acumulador = 0;
    for(let nums of array){
        if (nums % 2 === 0) acumulador++;
    } console.log(`Hay ${acumulador} numeros pares!`);
}
 
let arrayNums = [1, 10, 2, 20, 3, 30];
existPar(arrayNums);
//respuesta -> Hay 4 numeros pares!
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar
sin imagen de perfil

¡Necesito ayuda con una función!

Publicado por Alejandro (40 intervenciones) el 12/10/2021 16:59:16
¿Con el código que yo tengo implantado cabría la posibilidad de mostrar los números que son pares? No el decir que hay 4 números pares sino el mostrar aquellos que lo son
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 7aamin
Val: 9
Ha aumentado su posición en 6 puestos en JavaScript (en relación al último mes)
Gráfica de JavaScript

¡Necesito ayuda con una función!

Publicado por 7aamin (79 intervenciones) el 12/10/2021 17:42:51
1
2
3
4
5
6
7
8
9
let existPar = (array) => {
  let acumulador = [];
    for(let nums of array){
        if (nums % 2 === 0) acumulador.push(nums);
    } console.log(`Los numeros "${acumulador}" son pares!`);
}
 
let arrayNums = [1, 10, 2, 20, 3, 30];
existPar(arrayNums);
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar
sin imagen de perfil

¡Necesito ayuda con una función!

Publicado por Alejandro (40 intervenciones) el 12/10/2021 19:07:00
Gracias! Me has salvado
Tengo otra dudilla, en un ejercicio me piden hacer una función que devuelva verdadero o falso si todas las iniciales de las marcas de coche de un array empiezan por S, yo tengo esto:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
function isTrue(array){
    for(let marcas of array){
        for(inicial of marcas){
            if(inicial == "S"){
                return true;
            }
            else{
                return false;
            }
        }
    }
}
miArrayMarcas = ["Seat, Bugatti", "Skoda", "Fiat];
console.log(isTrue(miArrayMarcas));

El problema viene en que solo me cuenta si la primera palabra del array empieza por S, si es correcto muestra true, si es falso muestra false pero no tiene en cuenta las demas palabras
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 7aamin
Val: 9
Ha aumentado su posición en 6 puestos en JavaScript (en relación al último mes)
Gráfica de JavaScript

¡Necesito ayuda con una función!

Publicado por 7aamin (79 intervenciones) el 12/10/2021 20:34:26
estas haciendo lo mismo que antes, al usar return, la funcion terminara sim importar los demas elemntos.. Apenas se cumpla la condicion, se activara el return, y la funcion terminara.

Al hacer
1
for(inicial of marcas)
estas evaluando todas las letras de cada string.. pero lo que reamente te importa es solo la primera letra.. por lo tanto deberias usar ya sea startsWith() o ya sea string[0]:

1
2
3
4
5
6
7
8
9
10
11
function isTrue(array){
  let lengthOfArray = array.length;
  let validation = 0;
  for (let marca of array) {
      if (marca[0] === "S") validation++;
  } if (validation === lengthOfArray) return true
  else return false
}
 
let miArrayMarcas = ["Seat", "Bugatti", "Skoda", "Fiat"];
console.log(isTrue(miArrayMarcas));
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar