2011-11-15 8 views
10

tengo la siguiente función:Devolución de valores de bucle en javascript

function getId(a){ 
    var aL = a.length; 
    for(i = 0; i < aL; i++){ 
     return a[i][2].split(":", 1)[0]; 
    }  
    }       

y cuando se utiliza console.log() dentro de la función en lugar de return consigo todos los valores en el circuito, y lo mismo vale para document.write . ¿Cómo puedo acceder a estos valores como una cadena para usar en otra sección de mi código?

Gracias de antemano.

+4

La declaración 'return' sale inmediatamente una función, devolviendo el valor de la expresión que le sigue. Si usa una instrucción 'return' en un bucle sin algún tipo de condición con ese estilo, preformará la primera pasada y luego saldrá. Debe recopilarlos en una variable y devolver la variable después del ciclo. Como otros han sugerido, probablemente querrás guardarlos en una matriz. –

+0

Gracias inútil Código después de mirar esto un poco más profundo, veo donde me equivoqué. Gracias – jeffreynolte

Respuesta

8

Puede hacerlo con yield en las versiones más recientes de js, pero eso está fuera de toda duda. Esto es lo que puede hacer:

function getId(a){ 
    var aL = a.length; 
    var values = []; 
    for(i = 0; i < aL; i++){ 
    values.push(a[i][2].split(":", 1)[0]); 
    }  
    return values.join(''); 
} 
+0

¿No debería ser 'var values ​​= [];'? – fncomp

1

Usted caché tengo la cuerda y volver más tarde:

function getId(a){ 
    var aL = a.length; 
    var output = ''; 
    for(var i = 0; i < aL; i++){ 
     output += a[i][2].split(":", 1)[0]; 
    }  
    return output; 
} 
0
  • La instrucción de retorno rompe el bucle vez que se ejecuta. Por lo tanto, considere poner return instrucción fuera debucle.
  • Puesto que usted quiere devolver una cadena, se creará una variable y asignarlo a una cadena vacía. (Aquí es donde va a anexar/agregar resultados del bucle.)
  • retorno la variable de cadena.

código Así final se verá así ...

function getId(a){ 
    var result = ''; 
    var aL = a.length; 
    for(i = 0; i < aL; i++){ 
     result += a[i][2].split(":", 1)[0]; 
    } 
    return result; 
    } 
Cuestiones relacionadas