Foros del Web » Programación para mayores de 30 ;) » Programación General »

Acceder a todos los valores de un array a la vez

Estas en el tema de Acceder a todos los valores de un array a la vez en el foro de Programación General en Foros del Web. Hola, amigos del foro, necesito ayuda para aclararme de una vez, pues no me funciona lo que quiero hacer, me explico. Lo que quiero lograr ...
  #1 (permalink)  
Antiguo 15/06/2012, 16:48
Avatar de Hobby72  
Fecha de Ingreso: junio-2009
Mensajes: 34
Antigüedad: 14 años, 10 meses
Puntos: 0
Acceder a todos los valores de un array a la vez

Hola, amigos del foro, necesito ayuda para aclararme de una vez, pues no me funciona lo que quiero hacer, me explico.
Lo que quiero lograr es que en una caja prompt segun el texto o dato que ingresen, salga un alert u otro, lo hago con nombres, y que segun que nombre hayan tecleado salga un alert con un mensaje personalizado en dependencia del dato que anteriormente hayan ingresado. Ya lo sé hacer sin utilizar un array pero lo he intentado con un array para hacerlo mas conciso y no copiar tanto codigo pero no me funciona. adjunto el codigo que lo hago con dias de la semana en este caso para que sea mas entendible. Gracias de antemano

<script type="text/javascript">
var caja=null
var diasemana = new Array("Lunes","martes","miercoles","jueves","viern es");
while(caja==null || caja==""){
caja=prompt("¿Que dia es el que vas a ir ?","");
}
if(caja==diasemana){
alert("Este mensaje, solo para dias entre semana");
}
else if(caja=="Sábado" || caja=="sábado"|| caja=="Domingo" || caja=="domingo"){
alert("Este mensaje solo para fin de semana");
}else{
alert("Debes introducir un dia");
}
</script>
Lo que no quiero es tener que repetir los nombres de los dias ya sea en mayusculas o minusculas por si cabe la posibilidad y de esa manera la idea mia era meterlos en un array autonumerico, pero no me funciona cuando trato de utilizar la variable correspondiente al array diasemana, solo me funciona si especifico entre corchetes[] la clave que corresponda al dia que escriban, pero no me sirve pq entonces me quedo igual tengo que ir metiendo las claves para cada valor.
Resumiendo quiero un mensaje para dias entre semanas y otro para findesemanas pero utilizando este array de forma correcta. Espero haberme explicado
  #2 (permalink)  
Antiguo 16/06/2012, 08:51
 
Fecha de Ingreso: abril-2011
Mensajes: 1.342
Antigüedad: 13 años
Puntos: 344
Respuesta: Acceder a todos los valores de un array a la vez

Buenas,

El problema es que no puedes comparar directamente un array con un valor normal, tienes que recorrer el array para mirar componente a componente si existe el valor que buscas en él.

Para ello, yo he creado una función llamada contains que recorre el array.

Se le pasa un array, el objeto que quieres buscar y como último parámetro opcional, una función de comparación.

Esta función de comparación se utiliza para comparar un objeto del array con el objeto que le pasas. En el ejemplo que te he puesto, le he pasado una función que comparar dos cadenas sin tener en cuenta las mayúsculas o las minúsculas.
(Se le podría haber pasado también una función anónima)

Código Javascript:
Ver original
  1. function contains(a, obj,fequal) {
  2.     var i = a.length;
  3.       var result = false;
  4.     while (i-- && !result) {
  5.      
  6.         if (fequal != null)
  7.            result = fequal(a[i],obj);
  8.         else result = (a[i] === obj);    
  9.        
  10.     }
  11.    return result;
  12. }
  13.  
  14. function CompareUpper(x,y){
  15.     return x.toUpperCase() == y.toUpperCase();
  16. }
  17.  
  18. var caja=null;
  19.  
  20. var diasemana = new Array("lunes","martes","miercoles","jueves","viernes");
  21. var finsemana = new Array("sábado","domingo");
  22.  
  23. while(caja==null || caja==""){
  24. caja=prompt("¿Que dia es el que vas a ir ?","");
  25. }
  26.  
  27. if(contains(diasemana,caja,CompareUpper)){
  28. alert("Este mensaje, solo para dias entre semana");
  29. }
  30. else
  31.     if(contains(finsemana,caja,CompareUpper)){
  32. alert("Este mensaje solo para fin de semana");    
  33. }else{
  34. alert("Debes introducir un dia");    
  35. }&#8203;
  #3 (permalink)  
Antiguo 16/06/2012, 15:38
Avatar de Hobby72  
Fecha de Ingreso: junio-2009
Mensajes: 34
Antigüedad: 14 años, 10 meses
Puntos: 0
Respuesta: Acceder a todos los valores de un array a la vez

Ufff... Hola alexg88, no soy muy ducho en la programación, pero probaré tu metodo, hay contenido que utilizas que es completamente nuevo para mi, ya te diré pero por lo que puedo ver creo funcionará, saludos y gracias por responderme
  #4 (permalink)  
Antiguo 16/06/2012, 15:52
 
Fecha de Ingreso: abril-2011
Mensajes: 1.342
Antigüedad: 13 años
Puntos: 344
Respuesta: Acceder a todos los valores de un array a la vez

Buenas,

Si tienes algo duda, no dudes en comentarla y espero que te ayude.

El método contains he tenido que crearlo, porque en la especificación de Javascript no existe ningún método que permita ver si existe un elemento en un array.

Es cierto que existe un método indexOf, que devuelve el índice en el que se encuentra un determinado elemento dentro del array (y -1 si no se encuentra), pero no funciona, por ejemplo, en ciertas versiones de Internet Explorer (porque pertenece a la especificación 1.6 de Javascript).

Saludos.
  #5 (permalink)  
Antiguo 16/06/2012, 15:57
Avatar de Hobby72  
Fecha de Ingreso: junio-2009
Mensajes: 34
Antigüedad: 14 años, 10 meses
Puntos: 0
Respuesta: Acceder a todos los valores de un array a la vez

Ok alexg, me funciona, ya lo he probado, lo que tengo que tener en cuenta ahora las tildes de miércoles y sábado en el array para que me los reconozca.
Hay funciones a las cuales no he llegado aún, y debo estudiarlas mas, gracias por tu aporte, me servirá, saludos y hasta pronto

Etiquetas: java, vez
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 14:53.