Foros del Web » Programando para Internet » Javascript »

Return mas de 1 valor

Estas en el tema de Return mas de 1 valor en el foro de Javascript en Foros del Web. Hola a todos!! Queria saber si en Javascript una function puede devolver mas de 1 valor, he leido que en Ruby se puede y creo ...
  #1 (permalink)  
Antiguo 22/08/2008, 09:07
Avatar de messer  
Fecha de Ingreso: julio-2004
Mensajes: 467
Antigüedad: 19 años, 10 meses
Puntos: 5
Exclamación Return mas de 1 valor

Hola a todos!!

Queria saber si en Javascript una function puede devolver mas de 1 valor, he leido que en Ruby se puede y creo que tambien en PHP. Pero he buscado infromacion para Javascript y nada.

Sera que es imposible, de lo contrario como podria lograrlo?

Código:
Intente esto pero no funciona:
function setvalor(){
var x=1;
var y=2;
return x, y;
}
var uno, dos = setvalor;
Saludos y espero sus respuestas.
__________________
<script type="text/messerScript"><!--
window.onload=function(){ loadMesserRules(this.href) }
--></script>
  #2 (permalink)  
Antiguo 22/08/2008, 09:17
Avatar de David
Moderador
 
Fecha de Ingreso: abril-2005
Ubicación: In this planet
Mensajes: 15.720
Antigüedad: 19 años, 1 mes
Puntos: 839
Respuesta: Return mas de 1 valor

Lo que puedes hacer es devolver un array de valores.
__________________
Por favor, antes de preguntar, revisa la Guía para realizar preguntas.
  #3 (permalink)  
Antiguo 22/08/2008, 10:38
Avatar de caricatos
Moderador
 
Fecha de Ingreso: abril-2002
Ubicación: Torremolinos (Málaga)
Mensajes: 19.607
Antigüedad: 22 años, 1 mes
Puntos: 1284
Respuesta: Return mas de 1 valor

Cita:
Iniciado por David el Grande Ver Mensaje
Lo que puedes hacer es devolver un array de valores.
... o devolver objetos con distintos valores con sus respectivos tipos... un buen ejemplo son los "alias" como en los distintos frameworks y la función "$"... yo prefiero usar mis propios alias y un ejemplo es:
Código:
function tag(id) {return document.getElementById(id);}
ese alias devuelve un tag con sus atributos... algunos son arrays como childNodes o attributes... también pueden ser otros tags como firstChild/lastChild... u otros Objetos/arrays asociativos como style... funciones como hasChildNodes()... etc... supongo que no te sonará chino (con los JJ.OO. ya se me están poniendo los ojos achinados...)

Saludos
__________________
Por favor:
No hagan preguntas de temas de foros en mensajes privados... no las respondo
  #4 (permalink)  
Antiguo 22/08/2008, 14:57
Avatar de messer  
Fecha de Ingreso: julio-2004
Mensajes: 467
Antigüedad: 19 años, 10 meses
Puntos: 5
Respuesta: Return mas de 1 valor

\ /
c
_______
|_|_|


Je Je, No me suena a chino. Pero estaba buscando algo mas simple, sin embargo creo que con la opcion que me das tendria total versatilidad al momento de acceder a propiedades y valores.

Me viene buenisimo!! Saludos
__________________
<script type="text/messerScript"><!--
window.onload=function(){ loadMesserRules(this.href) }
--></script>
  #5 (permalink)  
Antiguo 22/08/2008, 14:59
Avatar de David
Moderador
 
Fecha de Ingreso: abril-2005
Ubicación: In this planet
Mensajes: 15.720
Antigüedad: 19 años, 1 mes
Puntos: 839
De acuerdo Respuesta: Return mas de 1 valor

¿Has probado con lo que te comenté? ¿Devolver un array de valores?.

Es más simple .
__________________
Por favor, antes de preguntar, revisa la Guía para realizar preguntas.
  #6 (permalink)  
Antiguo 22/08/2008, 15:24
Avatar de messer  
Fecha de Ingreso: julio-2004
Mensajes: 467
Antigüedad: 19 años, 10 meses
Puntos: 5
Respuesta: Return mas de 1 valor

No lo he probado y tienes razon, es mas simple en el caso de hacerlo sencillo lo hare con array y si necesito algo mas complejo utilizare el metodo de Caricatos.

Gracias a ambos!
__________________
<script type="text/messerScript"><!--
window.onload=function(){ loadMesserRules(this.href) }
--></script>
  #7 (permalink)  
Antiguo 22/08/2008, 20:32
Avatar de caricatos
Moderador
 
Fecha de Ingreso: abril-2002
Ubicación: Torremolinos (Málaga)
Mensajes: 19.607
Antigüedad: 22 años, 1 mes
Puntos: 1284
Respuesta: Return mas de 1 valor

Hola:

Por si no tienes claro lo de los objetos

Un ejemplillo:

Código:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<html>
<head>
<title>
	http://www.caricatos.net/probador
</title>
<script>
Object.prototype.toString = function() {
 var salida = new Array();
 for (e in this) salida[salida.length] = e.toString() + ": " + this[e];
 return salida.join(", ");
}
function devuelve_objeto() {
 datos = devuelve_objeto.arguments;
 salida = new Object();
 for (i = 0, total = datos.length; i < total; i ++)  salida[datos[i].split(":")[0]] = datos[i].split(":")[1];
 return salida;
}
window.onload = function() {
 alert(devuelve_objeto("a:hola", "n:33", "s:prueba nº 1"))
}

</script>
</head>
<body>

</body>
</html>
Espero que no te líe aún más...

Saludos
__________________
Por favor:
No hagan preguntas de temas de foros en mensajes privados... no las respondo

Última edición por caricatos; 22/08/2008 a las 20:54
  #8 (permalink)  
Antiguo 22/08/2008, 22:30
Avatar de derkenuke
Colaborador
 
Fecha de Ingreso: octubre-2003
Ubicación: self.location.href
Mensajes: 2.665
Antigüedad: 20 años, 7 meses
Puntos: 45
Respuesta: Return mas de 1 valor

Sólo nombrar que a partir de la versión 1.7 de javascript (IE6 no, pero FF3 sí) tenemos disponible la asignación desestructurada, que no cambia nada en la forma de devolver los valores, pero sí que la cambia en la forma de recibirlos. Sería como tener un list() de php para javascript:

Código PHP:
<script type="application/javascript;version=1.7"/>
function 
f() {
  return [
12];
}
var [
ab] = f();
document.write ("A es " " B es " "<BR>\n");
</script> 
Sería mucho más cómodo escribir así si no fuera porque IE6 se sigue usando demasiado


Saludos.
__________________
- Haz preguntas inteligentes, y obtendrás más y mejores respuestas.
- Antes de postearlo Inténtalo y Búscalo.
- Escribe correctamente tus mensajes.
  #9 (permalink)  
Antiguo 24/08/2008, 13:34
AlvaroG
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: Return mas de 1 valor

solo quería mencionar que los lenguajes como python permiten estas cosas

def funcion():
return 1, 2

var1, var2 = funcion()

pero eso no es estrictamente porque función devuelva 2 valores, sino porque devuelve una lista de valores. De hecho se puede hacer lo siguiente:

var3 = funcion()
print type(var3)

y el resultado en la pantalla será que var3 es una tupla.

Funcionalmente es lo mismo decir esto y decir que "devuelve varios valores", pero en la realidad, considerando lo que sucede "por debajo", estas líneas de python

return 1, 2
var1, var2 = funcion()

son idénticas a estas líneas de php

return array(1, 2);
list($var1, $var2) = funcion();

o, con javascript:

return [1, 2]
var_array = funcion(); // tengo var_array[0] y var_array[1]


Saludos.
  #10 (permalink)  
Antiguo 25/08/2008, 08:25
Avatar de messer  
Fecha de Ingreso: julio-2004
Mensajes: 467
Antigüedad: 19 años, 10 meses
Puntos: 5
Respuesta: Return mas de 1 valor

Muchisimas gracias a todos!! definitivamente me ha resultado de gran ayuda la informacion aportada por todos, si hay mas comentarios interesantes pues son bienvenidos.

__________________
<script type="text/messerScript"><!--
window.onload=function(){ loadMesserRules(this.href) }
--></script>
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 21:24.