JavaScript - Alguien me ayuda con este ejercicio de arrays?

 
Vista:
sin imagen de perfil
Val: 13
Ha disminuido su posición en 2 puestos en JavaScript (en relación al último mes)
Gráfica de JavaScript

Alguien me ayuda con este ejercicio de arrays?

Publicado por Jan (7 intervenciones) el 23/10/2018 22:50:44
Código:
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
34
'use strict'
 
/*
  1- Pedir 6 numeros por pantalla y meterlos en una array
  2- Mostrar el array entero (todos sus elementos) en el cupero de la pagina y en consola
  3- Ordenarlo y mostrarlo
  4- Invertir su orden y mostrarlo
  5- Mostrar cuantos elementos tiene la array
  6- Busqueda de un valor introducido por el usuario, que nos diga si lo encuentra y si es asi su indice
  (Se valora el uso de funciones)

*/
 
/* La variable "elementos" recibe la array nose la utilidad */
function mostrarArray(textoCustom = "") {
  document.write("<h1>Os presentamos el contenido de la array "+textoCustom+"<h1>");
  numeros.forEach((elemento, indice)=>{
  document.write("<strong>"+elemento+"</strong><br/>");
});
}
 
// Apartado 1
var numeros = [];
for(var i = 0; i <=5; i++) {
  numeros.push(parseInt(prompt("Introduce un numero")));
}
 
 
// Apartado 6
// Busqueda de un valor introducido por el usuario, que nos diga si lo encuentra y si es asi su indice
 
var busqueda = parseInt(prompt("Que numero desea buscar?"));
// Si lo encuentra, le da el valor "true" y si no lo encuentra, -1
var posicion = numeros.findIndex(busqueda);

Es el ejercicio 6. Como lo hariais? Lo he estado intentando sin éxito.
La solución del profesor es esta:
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
34
35
36
37
38
39
40
41
'use strict'
 
/*
  1- Pedir 6 numeros por pantalla y meterlos en una array
  2- Mostrar el array entero (todos sus elementos) en el cupero de la pagina y en consola
  3- Ordenarlo y mostrarlo
  4- Invertir su orden y mostrarlo
  5- Mostrar cuantos elementos tiene la array
  6- Busqueda de un valor introducido por el usuario, que nos diga si lo encuentra y si es asi su indice
  (Se valora el uso de funciones)

*/
 
/* La variable "elementos" recibe la array nose la utilidad */
function mostrarArray(textoCustom = "") {
  document.write("<h1>Os presentamos el contenido de la array "+textoCustom+"<h1>");
  numeros.forEach((elemento, indice)=>{
  document.write("<strong>"+elemento+"</strong><br/>");
});
}
 
// Apartado 1
var numeros = [];
for(var i = 0; i <=5; i++) {
  numeros.push(parseInt(prompt("Introduce un numero")));
}
 
 
// Apartado 6
// Busqueda de un valor introducido por el usuario, que nos diga si lo encuentra y si es asi su indice
 
var busqueda = parseInt(prompt("Que numero desea buscar?"));
// Si lo encuentra, le da el valor "true" y si no lo encuentra, -1
var posicion = numeros.findIndex(elemento => elemento == busqueda);
 
if (posicion && posicion != -1) {
  document.write("ENCONTRADO");
  document.write("Posición de la busqueda: "+posicion);
} else {
  document.write("NO ENCONTRADO!");
}

No entiendo porque hace esta condición. Si la variable posición AND la variable posición es diferente a -1? No le veo el sentido...
Muchas gracias por la ayuda i si teneis alguna solución mejor, adelante.
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 xve
Val: 3.162
Oro
Ha mantenido su posición en JavaScript (en relación al último mes)
Gráfica de JavaScript

Alguien me ayuda con este ejercicio de arrays?

Publicado por xve (2100 intervenciones) el 24/10/2018 07:54:24
Hola Jan, intento explicarte la linea que creo que es la que no te queda clara que seria esta:
1
if (posicion && posicion != -1) {

El if, hace dos comprobaciones.
1.- que exista la variable posición con un valor True... que puede ser cualquier valor entero menos el 0
2.- si se cumple la primera condición, evalua la segunda condicion. Comprueba que posicion sea diferente a -1

viendo el código, yo creo que es erróneo, ya que si la búsqueda devuelve el primer elemento, posición tendrá el valor 0, por lo que devolverá "NO encontrado"

Este código devuelve la posicion del elemento en el array o -1... en ningun caso devuelve true!!
1
2
// Si lo encuentra, le da el valor "true" y si no lo encuentra, -1
var posicion = numeros.findIndex(elemento => elemento == busqueda);
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 disminuido su posición en 2 puestos en JavaScript (en relación al último mes)
Gráfica de JavaScript

Alguien me ayuda con este ejercicio de arrays?

Publicado por Jan (7 intervenciones) el 24/10/2018 13:24:44
En el punto 1 de la explicación, a que te refieres? Si el valor es true no podra ser un valor entero a la vez no?
Si el código esta erroneo, serias tan amable de poner el código correcto?

Muchas 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
Imágen de perfil de xve
Val: 3.162
Oro
Ha mantenido su posición en JavaScript (en relación al último mes)
Gráfica de JavaScript

Alguien me ayuda con este ejercicio de arrays?

Publicado por xve (2100 intervenciones) el 24/10/2018 15:35:16
Nunca sera True Jon, porque la función find index, siempre devuelve un numero... -1 o la posicion en el indice.

Lo correcto seria:
1
if (posicion != -1) {
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
Val: 13
Ha disminuido su posición en 2 puestos en JavaScript (en relación al último mes)
Gráfica de JavaScript

Alguien me ayuda con este ejercicio de arrays?

Publicado por Jan (7 intervenciones) el 24/10/2018 20:55:54
Muchas gracias a todos por la ayuda.
Resolvió mi problema
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