2011-06-08 12 views
7

Tengo una matriz asociativa con dos objetos dentro. Ejecutando esto a través de $(myassoc).each(), la devolución de llamada se ejecuta solo una vez. Además, los parámetros de devolución de llamada (índice y objeto) devuelven 0 y toda la matriz asociativa, respectivamente.¿Cómo funciona jQuery.each() con matrices asociativas (objetos)?

Uno esperaría que jQuery.each() se ejecutara para cada elemento de la matriz, devolviendo las claves correctas como índice y el elemento correcto como el objeto.

¿Por qué no está sucediendo eso, y puede jQuery hacer lo que estoy buscando?

+0

¿Puedes mostrar el código? '$ (obj) .each()' funciona bien con –

+1

¿Has probado '$ .each (myassoc, func ...'? –

+0

Si solo tienes dos objetos adentro (2 teclas de array) entonces solo habrá dos iterations. Si quieres 'each' esos dos objetos, tienes que hacer' .each' nuevamente para ellos –

Respuesta

16

Creo que estás buscando jQuery.each() en lugar de each()

intente esto:

$.each(myassoc, function(index, value){ 
     //your code 
    }); 
7

probar esto:

$.each(assocarray,function(i, value){ 
    console.log('index: ' + i + ',value: ' + value); 
}); 
1

El problema es que la función $.each() internamente recupera y utiliza la propiedad length de la colección pasada. Pero en una matriz asociativa que no tiene índices enteros, el length siempre parece ser 0. Para $.each() ahora parece que no hay nada por lo que caminar.

La función $.each() recupera y utiliza el length propiedad de la colección pasó internamente.

La solución es simplemente usar un objeto en su lugar.

var myassoc = {}; 
Cuestiones relacionadas