Comment faire une boucle par le biais de tableau en jQuery?
Je suis en train de parcourir un tableau. J'ai le code suivant:
var currnt_image_list= '21,32,234,223';
var substr = currnt_image_list.split(','); //array here
Suis en train d'essayer d'obtenir toutes les données de la matrice. Peut quelqu'un me conduire dans le droit chemin s'il vous plaît?
Vous devez vous connecter pour publier un commentaire.
(Mise à jour: Mon autre réponse ici établit la non-jQuery options beaucoup plus poussées. La troisième option ci-dessous,
jQuery.each
, n'est-ce pas en bien.)Quatre options:
Générique en boucle:
ou dans ES2015+:
Avantages: Straight-forward, pas de dépendance sur jQuery, facile à comprendre, pas de problèmes avec la préservation de la signification de
this
dans le corps de la boucle, pas de surcharge inutile des appels de fonction (par exemple, dans théorie plus rapides, mais en fait, vous auriez à avoir autant d'éléments que les chances sont que vous auriez d'autres problèmes; détails).ES5 du
forEach
:De ECMAScript5, les tableaux ont une
forEach
fonction, ce qui le rend facile à boucle dans le tableau:Lien vers les docs
(Remarque: Il existe beaucoup d'autres fonctions, et pas seulement
forEach
; voir la réponse citée ci-dessus pour plus de détails.)Avantages: Déclarative, peut utiliser une de fonctions pré-intégrées pour l'itérateur si vous en avez un à portée de main, si votre corps de boucle est complexe la détermination de la portée d'un appel de fonction est parfois utile, pas besoin d'un
i
variable contenant la portée.Inconvénients: Si vous utilisez
this
dans le contenant du code et que vous souhaitez utiliserthis
au sein de votreforEach
de rappel, vous devez Un) Coller dans une variable de sorte que vous pouvez l'utiliser à l'intérieur de la fonction, B) Passer en tant que deuxième argument deforEach
doncforEach
le définit commethis
pendant le rappel, ou C) l'Utilisation d'un ES2015+ flèche fonction, qui se ferme surthis
. Si vous n'avez pas une de ces choses, dans le rappelthis
seraundefined
(en mode strict) ou de l'objet global (window
) en loose mode. Il y avait un deuxième inconvénient queforEach
n'était pas universellement pris en charge, mais ici à 2018, le seul navigateur que vous allez courir dans que de ne pas avoirforEach
est IE8 (et il ne peut pas être correctement polyfilled, soit).ES2015+'s
for-of
:Voir la réponse liée au sommet de cette réponse pour plus de détails sur la façon dont cela fonctionne.
Avantages: Simple, direct, offre une portée variable (ou une constante, dans le ci-dessus) pour l'entrée de la baie.
Inconvénients: Non pris en charge dans n'importe quelle version de IE.
jQuery.chaque:
(Lien vers les docs)
Avantages: Tous les mêmes avantages que la
forEach
, de plus, vous savez qu'il est là depuis que vous êtes à l'aide de jQuery.Inconvénients: Si vous utilisez
this
dans le contenant du code, vous devez le coller dans une variable de sorte que vous pouvez l'utiliser à l'intérieur de la fonction, depuisthis
signifie quelque chose d'autre à l'intérieur de la fonction.Vous pouvez éviter la
this
chose si, en utilisant$.proxy
:...ou
Function#bind
:...ou dans ES2015 ("ES6"), une flèche fonction:
Ce PAS à faire:
Ne pas utilisation
for..in
pour cette (ou si vous le faites, le faire avec des garanties appropriées). Vous verrez des gens en disant (en fait, brièvement il y avait une réponse ici en disant que), maisfor..in
ne pas faire ce que beaucoup de gens pensent qu'il fait (il fait quelque chose de bien plus utile!). Plus précisément,for..in
boucles à travers l'énumération des noms de propriété d'un objet (pas les indices d'un tableau). Comme les tableaux sont des objets, et leur seule énumération des propriétés par défaut sont les indices, il semble surtout faire en sorte de travailler dans un fade de déploiement. Mais ce n'est pas une hypothèse sûre que vous pouvez simplement utiliser pour qui. Voici une exploration: http://jsbin.com/exohi/3Je doit adoucir le "ne pas" ci-dessus. Si vous avez à traiter avec des matrices creuses (par exemple, le tableau a 15 éléments au total, mais leurs indices sont éparpillés à travers la gamme de 0 à 150 000, pour une raison quelconque, et donc la
length
est 150,001), et si vous utilisez des garanties appropriées commehasOwnProperty
et en vérifiant le nom de la propriété est vraiment numériques (voir le lien ci-dessus),for..in
peut être parfaitement raisonnable de manière à éviter beaucoup de complications inutiles boucles, depuis que la peuplé indices seront énumérés..each()
oufor...in
faire une boucle sur un tableau est en général une mauvaise idée. C'est juste comme des âges plus lent que d'utiliserfor
ouwhile
. À l'aide d'unfor loop
c'est même une excellente idée de mettre en cache leslength
de la propriété avant de faire la boucle.for (var i = 0, len = substr.length; i < len; ...
Function#bind
. 🙂 Bon point, ajouté.i++
au lieu de++i
? Sinon, vous êtes en sautant le premier élément.i++
et++i
est le résultat de cette expression, qui n'est jamais utilisé dans l'exemple ci-dessus. Unfor
boucle fonctionne comme ceci: 1. L'initialisation, 2. Test (fin si faux), 3. Corps, 4. Mise à jour 5. Retour à l'Étape 2. Le résultat de la mise à jour de l'expression n'est pas utilisé pour quoi que ce soit.item
n'est pas un mot réservé sur IE. Vous pouvez utiliseritem
comme un identificateur très bien sur IE, et j'ai, à plusieurs reprises, pendant des années. La preuve (fonctionnera sur n'importe quelle version d'IE à partir de IE6 onward si JSBin fonctionne sous IE6 ou IE7; sera certainement le travail sur IE8+ que je sais JSBin travaux sur ceux-ci): output.jsbin.com/fipemagiluitem
est une fonction globale sur IE que vous ne pouvez pas écraser. Mais que a n effet sur votre capacité à utiliseritem
comme un identifiant (variable ou d'un paramètre), il vous suffit de le déclarer: output.jsbin.com/gabuwozoxaforEach
pas encore largement pris en charge? merci!jQuery.chacun()
jQuery.chacun()
matrice d'itération
objet d'itération
exemple:
JS:
HTML:
javascript boucles pour tableau
pour la boucle
exemple
JS:
pour en
pour de
forEach
Ressources
MDN boucles et itérateurs
Pas besoin de jquery ici juste un
for
boucle fonctionne:Option 1 : Le traditionnel
for
-boucleLes bases
Traditionnel
for
-boucle a trois composantes :Ces trois composantes sont séparées les unes des autres par un
;
symbole. Le contenu de chacune de ces trois composantes est facultative, ce qui signifie que les éléments suivants sont les plus minimesfor
-boucle possible :Bien sûr, vous aurez besoin d'inclure un
if(condition === true) { break; }
ou unif(condition === true) { return; }
quelque part à l'intérieur quefor
-boucle pour arriver à arrêter de courir.Habituellement, cependant, l'initialisation est utilisé pour déclarer un index, la condition est utilisé pour comparer l'indice avec une valeur minimale ou maximale, et le coup est utilisé pour incrémenter l'index :
À l'aide d'un tradtional
for
-boucle pour parcourir un tableauLa manière traditionnelle de parcourir un tableau, est-ce :
Ou, si vous préférez boucle vers l'arrière, ce faire, vous :
Cependant, il existe de nombreuses variantes, comme par exemple. celui-ci :
... ou celui-là ...
... ou celui-ci :
Selon ce qui convient le mieux est en grande partie une question de goût personnel et le cas d'utilisation spécifiques vous êtes à la mise en œuvre.
Remarque :
Chacun de ces variations est pris en charge par tous les navigateurs, y compris véry anciens!
Option 2 : Le
while
-boucleUne alternative à un
for
-loop est unwhile
en boucle. Pour parcourir un tableau, vous pourriez faire ceci :Remarque :
Comme les
for
-boucles,while
-les boucles sont pris en charge par même les plus anciennes des navigateurs.Aussi, chaque boucle while peut être réécrite comme
for
en boucle. Par exemple, lewhile
-boucle ci-dessus se comporte exactement de la même manière que cefor
-boucle :Option 3 :
for...in
etpour...de
En JavaScript, vous pouvez également le faire :
Cette fonction doit être utilisée avec soin, cependant, comme elle ne se comportent pas de la même chose qu'une traditionnelle
for
en boucle dans tous les cas, et il y a un risque d'effets secondaires doivent être pris en considération. Voir Pourquoi utiliser "pour..." avec matrice d'itération une mauvaise idée? pour plus de détails.Comme une alternative à
for...in
, il y a maintenant aussi pourpour...de
. L'exemple suivant montre la différence entre unfor...of
boucle et unfor...in
boucle :Remarque :
Vous devez également considérer qu'aucune version de Internet Explorer prend en charge
for...of
(Edge 12+ ne) et quefor...in
nécessite au moins IE10.Option 4 :
Array.le prototype.forEach()
Une alternative à
For
-boucles estArray.prototype.forEach()
, qui utilise la syntaxe suivante :Remarque :
Array.prototype.forEach()
est pris en charge par tous les navigateurs modernes, ainsi que IE9+.Option 5 :
jQuery.chacun()
De plus en plus des quatre autres options mentionnées, jQuery a aussi son propre
foreach
variation.Il utilise la syntaxe suivante :
Utiliser le
each()
fonction de jQuery.Voici un exemple:
Utiliser Jquery chaque. Il existe d'autres moyens, mais chacun est conçu à cet effet.
Et ne mettez pas de virgule après le dernier numéro.
Vous pouvez utiliser un
for
boucle:essayez ceci:
D'autres moyens de l'itération à travers array/string avec des effets secondaires
JS: