¿La forma más elegante de devolver valor desde JQuery $ .each?

Me preguntaba si existe una forma más elegante de devolver un valor de la función que pegué a continuación: "getImageURLforPOICategory".

Como puede ver, he usado la función "each" de JQuery para iterar a través de una matriz de objetos, cuando encuentro el valor coincidente, quiero devolver un resultado del ciclo "each" y luego directamente de la función que contiene el cada bucle.

He usado una variable local para "cachearla" y luego la devuelvo. No estoy completamente seguro de si este es el mejor enfoque. ¿Hay alguna forma de devolver el valor directamente desde dentro de cada bucle?

Tracker.getImageURLforPOICategory = function (POICategoryID) {
 var url;
 $.each(Tracker.pointofinterestcategories, function () {
  if (this.id === POICategoryID) {
   url = this.imageurl;
   return;
  }
 }
 );
 return url;
};

Gracias por leer,

Aclamaciones,

Duncan

preguntado el 09 de enero de 11 a las 01:01

2 Respuestas

No, no puede devolver un valor de la .each().

Si haces un return false; detendrá el ciclo para que no se ejecute más de lo necesario, pero necesitará usar una variable como lo está haciendo ahora.

Si no usa $.each(), pero en su lugar usa un for bucle, podrá simplemente:

return Tracker.pointofinterestcategories[ i ].imageurl

Respondido el 09 de enero de 11 a las 04:01

Muchas gracias por eso. Revertir a un bucle For estándar tiene sentido para una operación tan simple, supongo. Saludos, Duncan. - Duncan_m

Sin embargo, todavía usaría un bucle for.

Tracker.getImageURLforPOICategory = function (POICategoryID) {
    return $.grep(Tracker.pointofinterestcategories, function (item) {
        return item.id === POICategoryID;
    })[0].imageurl;
}

Respondido el 09 de enero de 11 a las 07:01

Bien ... Vi esa función grep hace unas noches y estaba planeando explorarla ... ¡Gracias por el ejemplo carnoso! - Duncan_m

No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas or haz tu propia pregunta.