Foros del Web » Programando para Internet » Javascript »

Devolver una función más de un valor

Estas en el tema de Devolver una función más de un valor en el foro de Javascript en Foros del Web. Tengo esta duda: ¿Cómo podría hacer para que una función devuelva más de un valor para que los reciba otra función? He intentado esto, pero ...
  #1 (permalink)  
Antiguo 03/07/2009, 03:48
Avatar de Legoltaz  
Fecha de Ingreso: agosto-2008
Mensajes: 325
Antigüedad: 15 años, 9 meses
Puntos: 6
Devolver una función más de un valor

Tengo esta duda: ¿Cómo podría hacer para que una función devuelva más de un valor para que los reciba otra función?

He intentado esto, pero no me funciona :

Código JavaScript:
Ver original
  1. function setValues(){
  2. var title = prompt("Title:");
  3. var title2 = prompt("2nd title:");
  4. return [title,title2];
  5. }
  6. var [t,t2] = setValues();
  7. alert("1st title: "+t+";2nd title: "+t2);

También he probado de esta forma, pero sólo me devuelve el segundo valor (title2) y el primero me lo asigna como undefined:

Código JavaScript:
Ver original
  1. function setValues(){
  2. var title = prompt("Title:");
  3. var title2 = prompt("2nd title:");
  4. return title,title2;
  5. }
  6. var t,t2 = setValues();
  7. alert("1st title: "+t+";2nd title: "+t2);
  #2 (permalink)  
Antiguo 03/07/2009, 04:06
Avatar de nflamel  
Fecha de Ingreso: agosto-2005
Ubicación: Granada
Mensajes: 41
Antigüedad: 18 años, 9 meses
Puntos: 0
Respuesta: Devolver una función más de un valor

Cita:
Iniciado por Legoltaz Ver Mensaje
Tengo esta duda: ¿Cómo podría hacer para que una función devuelva más de un valor para que los reciba otra función?

He intentado esto, pero no me funciona :

Código JavaScript:
Ver original
  1. function setValues(){
  2. var title = prompt("Title:");
  3. var title2 = prompt("2nd title:");
  4. return [title,title2];
  5. }
  6. var [t,t2] = setValues();
  7. alert("1st title: "+t+";2nd title: "+t2);

También he probado de esta forma, pero sólo me devuelve el segundo valor (title2) y el primero me lo asigna como undefined:

Código JavaScript:
Ver original
  1. function setValues(){
  2. var title = prompt("Title:");
  3. var title2 = prompt("2nd title:");
  4. return title,title2;
  5. }
  6. var t,t2 = setValues();
  7. alert("1st title: "+t+";2nd title: "+t2);
Javascript no soporta devolver varios argumentos como por ejemplo Ruby. Tienes que "currartelo" para hacerlo a tu manera.
En el primer caso deberías hacer esto

Código JavaScript:
Ver original
  1. function setValues(){
  2.   var title = prompt("Title:");
  3.   var title2 = prompt("2nd title:");
  4.   return [title,title2];
  5. }
  6. var t = setValues();
  7. alert("1st title: "+t[0]+";2nd title: "+t[1]);

Otra cosa que puedes hacer es devolver un objeto javascript

Código JavaScript:
Ver original
  1. function setValues(){
  2.   var title = prompt("Title:");
  3.   var title2 = prompt("2nd title:");
  4.   var devolver = {
  5.     title: title,
  6.     title2: title
  7.   }
  8.   return devolver;
  9. }
  10. var titulos = setValues();
  11. alert("1st title: "+titulos.title+";2nd title: "+titulos.title2);

Saludos!
  #3 (permalink)  
Antiguo 03/07/2009, 04:14
Avatar de Legoltaz  
Fecha de Ingreso: agosto-2008
Mensajes: 325
Antigüedad: 15 años, 9 meses
Puntos: 6
Respuesta: Devolver una función más de un valor

Muchas gracias , me quedo con la segunda opción.

Última edición por Legoltaz; 03/07/2009 a las 04:21
  #4 (permalink)  
Antiguo 03/07/2009, 07:27
Avatar de David
Moderador
 
Fecha de Ingreso: abril-2005
Ubicación: In this planet
Mensajes: 15.720
Antigüedad: 19 años
Puntos: 839
Respuesta: Devolver una función más de un valor

Aquí también se habló del tema:
http://www.forosdelweb.com/f13/retur...-valor-617453/

Saludos.
__________________
Por favor, antes de preguntar, revisa la Guía para realizar preguntas.
  #5 (permalink)  
Antiguo 03/07/2009, 07:40
 
Fecha de Ingreso: julio-2009
Mensajes: 81
Antigüedad: 14 años, 10 meses
Puntos: 6
Respuesta: Devolver una función más de un valor

para la prox prueba meter los valores en una lista, tipo "diccionario" (nombre, valor, nombre1, valor1)
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 07:34.