Varias bibliotecas de JavaScript (por ejemplo, jQuery) ofrecen un método each:

$.each(myObj, myFunc);

¿Cuál es la ventaja sobre el uso del bucle for..in incorporado:

for(var i in myObj) {
    myFunc(i, myObj[i]);
}

En ambos casos, tendría que verificar las propiedades no deseadas (generalmente funciones), por lo que no veo por qué cada método se proporciona en primer lugar.

0
AnC 27 may. 2009 a las 16:11

4 respuestas

La mejor respuesta

Puedo pensar en al menos 3 ventajas, aunque son relativamente pequeñas.

  1. Sigue el paradigma de posibilidad de conectividad de jQuery, lo que le permite encadenar varias iteraciones si es necesario.
  2. Desglosa tanto la clave como el valor para usted como argumentos para la devolución de llamada, eliminando este código de su bucle.
  3. La sintaxis es coherente con otro código jQuery que pueda tener, lo que puede aumentar la legibilidad.

Las desventajas son algunos, pequeños gastos generales (tiene que pagar por lo que hace por usted) y la posibilidad de confundirlo con el método $ (). Each () que es completamente diferente.

4
tvanfosson 27 may. 2009 a las 12:24

Como la jQuery $.each(object, callback) explica

Una función iteradora genérica, que se puede utilizar para iterar sin problemas sobre objetos y matrices.

Para mantenerse en línea con otras funciones de utilidad, proporciona una sintaxis jQuery-fied fácil de usar

4
Russ Cam 27 may. 2009 a las 12:23

La primera toma 1 línea, la otra toma 3. Puede hacer cosas como encadenar, por lo que puede llamar a otra función de matriz después de que se haga la primera.

2
AgileJon 27 may. 2009 a las 12:16

En el cada ejemplo, puede usar this para llamar al elemento seleccionado actualmente y trabajar con eso.

$("div img").each(function(i){
    this.id = this.id + "_" + i;
});
2
Ólafur Waage 27 may. 2009 a las 12:15