Comment jQuery.chacun() travailler avec des tableaux associatifs (objets)?
J'ai un tableau associatif avec les deux objets à l'intérieur. L'exécution de ce à travers $(myassoc).each()
, le rappel s'exécute une seule fois. Aussi les paramètres de rappel (index et de l'objet) renvoie 0 et l'ensemble du tableau associatif, respectivement.
On pourrait s'attendre à jQuery.each()
à exécuter pour chaque élément dans le tableau, en retournant le bon de touches que l'index et le bon élément que l'objet.
Pourquoi n'est-ce pas ce qui se passe, et peut jQuery faire ce que je suis après?
peux-tu nous montrer le code?
Avez-vous essayé
Si vous n'avez que deux objets à l'intérieur (2 clés de tableau) donc il n'y aura que deux itérations. Si vous voulez
JavaScript A PLUS tableau associatif
Tableau associatif est juste un autre mot pour une clé/valeur de la cartographie pour autant que je sais. Je n'ai préciser "objets" dans le titre.
$(obj).each()
fonctionne très bien avecAvez-vous essayé
$.each(myassoc, func...
?Si vous n'avez que deux objets à l'intérieur (2 clés de tableau) donc il n'y aura que deux itérations. Si vous voulez
each
ces deux objets que vous avez à faire .each
de nouveau pour euxJavaScript A PLUS tableau associatif
Tableau associatif est juste un autre mot pour une clé/valeur de la cartographie pour autant que je sais. Je n'ai préciser "objets" dans le titre.
OriginalL'auteur Hubro | 2011-06-08
Vous devez vous connecter pour publier un commentaire.
Je pense que vous êtes à la recherche pour jQuery.chacun() au lieu de .chacun()
essayez ceci:
OriginalL'auteur dapangro
essayez ceci:
OriginalL'auteur thecodeparadox
Mal.
Ne pas
$(associative_array).each(function () {...})
-- non-sensNe pas
$.each(associative_array, function() {...});
-- qui a un obscur bug(1)Pour voir le bug, essayez ceci dans une console javascript:
Le premier exemple de sorties de trois lignes de paires clé-valeur, comme il se doit. La seconde sorties de rien!
La morale de l'histoire, ne pas utiliser jQuery.chacun() sur les objets. (Les objets en JavaScript sont essentiellement la même chose comme des tableaux associatifs.) Les choses pourraient bien fonctionner pour toujours, mais vous courez le risque qu'un jour un objet arrive à avoir un membre nommé
length
et sa valeur se trouve être exactement0
et puis vous avez un bug de nulle part qui peut être très difficile à expliquer. (Je vous laisse deviner, par la lourde influence croissante de cette réponse, si cela ne m'est jamais arrivé.)Comme mentionné dans le rapport de bug:
Je suggère d'aller plus loin, que jQuery.chacun ne doit pas être invoqué pour les tableaux associatifs, jamais.
(1) Ce "bug" ne peut jamais être résolu, puisque $.chacun() utilise historiquement Duck-Typing sur les tableaux: "les Tableaux de tableaux et objets similaires avec une longueur de propriété (comme une fonction de l'objet arguments) sont données par les index numérique."
Voici ce que j'utilise[merci Dominik] de boucle à travers la propriété des noms et des valeurs d'objets, ou de mettre une autre manière, les clés et les valeurs d'un tableau associatif:
looper() est alors une baisse-dans le remplacement pour $.chacun()
Tout comme $.chacun():
this
chaque valeur estfalse
(et pas seulement falsy) se termine la boucleUtilisation:
Essayer avec $.each() et vous obtiendrez un résultat vide. Car il interprète cet objet comme un tableau, comme objet de longueur zéro.
OriginalL'auteur Bob Stein
Le problème est que le
$.each()
fonction interne de la récupère et utilise leslength
propriété de la collection. Mais dans un tableau associatif qui n'a pas d'entier indices lalength
semble toujours être0
. Pour$.each()
maintenant il semble y avoir rien de marcher de travers.Des solutions est d'utiliser un objet à la place.
OriginalL'auteur leymannx