Compter les occurrences de la chaîne dans un tableau
J'ai un tableau en jQuery, et j'ai besoin de compter le nombre de "vraies" des chaînes dans ce tableau, et ensuite faire le "numOfTrue" variable égal au nombre de vraies cordes. Ainsi, dans le tableau ci-dessous, il y a 2 "vrai" des chaînes, donc numOfTrue serait égal à 2.
var numOfTrue;
var Answers = [ "true", "false", "false", "true", "false" ];
Je ne suis pas sûr de savoir comment faire une boucle dans le tableau en jQuery pour compter les cordes. Ou est une boucle même nécessaire?
Le nombre de véritables chaînes pourraient changer à partir de n'importe où entre 1 à 5.
Pas de jQuery nécessaire ici, c'est le javascript pays.
Vous pouvez utiliser
Vous n'avez pas un "tableau en jQuery", vous avez un "tableau de JavaScript". Vous êtes de la programmation dans le langage JavaScript; vous êtes simplement en utilisant la bibliothèque jQuery.
Merci pour la clarification, la Roquette. J'ai utilisé l'un des exemples de javascript ci-dessous.
Vous pouvez utiliser
.each()
à boucle, et .filter()
ou .map()
être plus fonctionnels. Mais avez-vous vraiment besoin d'utiliser jQuery?Vous n'avez pas un "tableau en jQuery", vous avez un "tableau de JavaScript". Vous êtes de la programmation dans le langage JavaScript; vous êtes simplement en utilisant la bibliothèque jQuery.
Merci pour la clarification, la Roquette. J'ai utilisé l'un des exemples de javascript ci-dessous.
OriginalL'auteur Livi17 | 2012-04-03
Vous devez vous connecter pour publier un commentaire.
À l'aide d'une base, l'ancienne boucle:
ou, un
reduce
ou un
filter
ensuite, vous avez une question à celui-ci 😉
Ce n'
p
etc
stand dans votre code?précédente, de. Ses une mauvaise habitude - mieux les noms seraient accumulateur, currentValue - voir Tableau.le prototype.réduire
OriginalL'auteur Jamiec
Vous n'avez pas besoin de jQuery pour cela.. une simple boucle for comme ci-dessous ferait l'affaire,
ou même sans boucle, DÉMO
Answers.join(',').match(/(?:,|^)true(?:,|$)/g).length
. Cela permettra de gérer les situations où un terme peut être une sous-chaîne d'une autre (c'est à dire la matrice contient à la fois "vrai" et le "vrai" et que vous souhaitez seulement à compter le nombre exact de chaîne "true"). Regex démo: regexpal.com/...OriginalL'auteur Selvakumar Arumugam
Il serait peut-être pas si les performances amical, mais vous pouvez utiliser de filtrage et de compter à l'aide de grep:
for
boucle oueach
, mais j'aime la façon dont vous avez réussi à le faire descendre à 1 ligne :). FWIW si jQuery avait unreduce
méthode, vous pourriez être en mesure de créer une efficace-liner...Il est également possible de le faire en JavaScript:
Answers.filter(function(v){ return v === "true"; }).length;
Pour info
.filter
n'est pas compatible avec IE 8. 🙁 kangax.github.com/es5-compat-tableBon à savoir, merci. En tout cas, c'est plus de la curiosité - la meilleure solution est de simplement utiliser un
for
boucle.OriginalL'auteur Samich
Vous n'avez pas besoin de jQuery pour cette tâche. Tout simplement Javascript. La meilleure réponse est donnée par Jamiec par vous pouvez également utiliser filtre ou réduire fonctions qui sont disponibles pour les tableaux.
fonction de filtre:
Ici vous fournissez fonction de callback qui est exécutée pour chaque élément dans le tableau. Si cette fonction renvoie
true
alors cet article sera de retour au tableau. Ensuite, vous obtenez la longueur de ce tableau ( longueur de["true", "true"]
tableau est2
)fonction de réduction:
Réduire le besoin de fonction fonction de callback qui est exécutée pour chaque élément dans le tableau. Élément de tableau est fourni en tant que deuxième argument, le premier est la valeur de retour d'précédemment exécutées de rappel. Le deuxième argument de la fonction de réduction est la valeur initiale qui est prévu pour première fonction de rappel. Si vous omettez ce, alors le premier élément de la matrice est fourni (dans cet exemple, si vous oubliez d'ajouter
0
comme deuxième argument, alors le résultat de la valeur sera"true0010"
chaîne, parce qu'au lieu d'ajouter des nombres, vous serez en concaténant les piqûres)filter
etreduce
ne fonctionnent pas dans les navigateurs plus anciens, par exemple, IE 8 ou ci-dessous. On pourrait envisager l'utilisation de JQuerygrep
option, cependant.OriginalL'auteur Mariusz Pawelski
Si vous ne souhaitez utiliser jQuery (et tbh, vous ne devriez pas pour cela) cela fonctionne:
Le Javascript équivalent est:
OriginalL'auteur Rory McCrossan
http://jsfiddle.net/3PpJS/
$.each(Answers, ...)
Je l'ai remarqué après que j'ai posté. Votre rapide!
Eh bien, la chose est.. quelqu'un a vu
$.each
et voté.. même si ce n'était pas correct(à l'origine)Il serait probablement mieux d'utiliser
===
au lieu de==
OriginalL'auteur Kevin Bowersox
http://jsfiddle.net/kpcrash/Xxcw6/
OriginalL'auteur kpcrash
Il n'est pas nécessaire d'utiliser
jQuery
pour de simples choses comme cela.C'était une blague 🙂 regardez ceci: doxdesk.com/img/updates/20091116-so-large.gif
OriginalL'auteur ShankarSangoli
Vous pouvez utiliser jQuery.chaque d'itérer sur la liste, par exemple:
Ici est un jsfiddle si vous voulez jouer avec ça:
http://jsfiddle.net/HHrwc/
OriginalL'auteur Justin Ethier
OriginalL'auteur Ivan Ivanov
En utilisant uniquement JS
OriginalL'auteur Eran Peled