JS - jQuery inarray ignoreCase() et()
bien, je suis plutôt du PHP personne, et mon JS compétences sont proches à aucun quand il s'agit de toute JS autres que de simples liés à la conception des opérations , donc excusez-moi si je demande de l'évidence .
les opérations suivantes serait un jeu d'enfant en PHP (et peut-être aussi en JS, mais je me bats avec des inconnus syntaxe ici ...)
Il est une sorte de validation de l'entrée
var ar = ["BRS201103-0783-CT-S", "MAGIC WORD", "magic", "Words", "Magic-Word"];
jQuery(document).ready(function() {
jQuery("form#searchreport").submit(function() {
if (jQuery.inArray(jQuery("input:first").val(), ar) != -1){
jQuery("#contentresults").delay(800).show("slow");
return false;
}
Cette question a 2 parties .
- 1 - comment puis-je le rendre possible pour que la matrice soit insensible à la casse ?
E. g. - BRS201103-0783-CT-S
donnera le même résultat que brs201103-0783-ct-s
ET Brs201103-0783-CT-s
ou MAGIC magic Magic MaGIc
fondamentalement, j'ai besoin de quelque chose comme ignoreCase() pour le tableau , mais je ne pouvais pas trouver toutes les références à ça en jQuery ni JS...
J'ai essayé toLowerCase()
- mais Il ne fonctionne pas sur le tableau (ittirating??) et aussi, serait-il résoudre le casse mixte ?
- 2 - Comment puis-je faire la fonction de reconnaître uniquement les pièces ou
les combinaisons des éléments ?
E. g. - si l'un des types de "word"
, je voudrais que ça passe comme "words"
, et aussi si quelqu'un types "some word"
il doit passer (contenant "mot" )
if (jQuery.inArray(jQuery("input:first").val().toLowerCase(), ar) != -1){
, la deuxième partie de la question paraît un peu trop large. Quelles sont les règles spécifiques? word
est contenue dans words
ok, mais some word
n'est pas contenue dans words
.merci pour le commentaire , ce que je voulais dire, c'est
some word
contient word
et aussi words
contient word
(partie de la chaîne...)Ok, la chose la plus étrange . mettre
val().toLowerCase()
va travailler sur un mot comme "magie/Magie" - mais maintenant, il renvoie la valeur false à la chaîne BRS201103-0783-CT-S
n'importe comment j'y entrer (les petites lettres minuscules , majuscules ou mixte..Probablement parce que la
magic
est minuscule dans votre tableau, alors que BRS201103-0783-CT-S
ne l'est pas. Vérifier alex réponse, il a posté une fonction simple de passer l'ensemble de votre tableau en lettres minuscules. :)
Ok, je vérifie ça maintenant, mais seulement pour mieux comprendre , si mon tableau sera en bas de casse , que chaque entrée affaire va passer ?
OriginalL'auteur Obmerk Kronen | 2012-07-16
Vous devez vous connecter pour publier un commentaire.
Partie 1
Vous pouvez traiter votre réseau à être entièrement en minuscules, minuscules et votre contribution afin
indexOf()
comme il est d'effectuer une recherche insensible à la casse.Vous pouvez minuscule string avec
toLowerCase()
comme vous l'avez déjà compris.Pour faire un tableau, vous pouvez utiliser...
Partie 2
Vous pouvez le vérifier une sous-chaîne, par exemple...
Sinon, vous pouvez sauter dans ce cas, la transformation de la matrice être en minuscules en appelant
toLowerCase()
sur chaqueelem
avant de vous enregistrerindexOf()
.()
etmap()
ne sont pas pris en charge dans les anciens S, mais sont triviales à polyfill. Un exemple d'un polyfill pour chacun d'eux est disponible liée à la documentation.Comme Fabrício Matté également souligné, vous pouvez utiliser le jQuery équivalents ici,
$.map()
pourArray.prototype.map()
et$.grep()
aveclength
propriété pourArray.prototype.some()
. Ensuite, vous recevrez la compatibilité de votre navigateur gratuitement.indexOf()
fonctionne de façon similaire à PHPstrpos
, sauf queindexOf
retourne-1
pour pas de match à la place defalse
comme PHP et de la syntaxe/paramètres est légèrement différente.une pour ce commentaire ..
Merci . autant que votre réponse semble logique , la 1ère partie n'est pas de travail pour moi en quelque sorte (peut-être que je fais une demande il de mal ??) - Elle retourne true en cas de baisse, mais toujours faux sur le haut .. je l'avais mis comme un nouveau VAR
var arr = ar.map(function(elem) { return elem.toLowerCase(); });
et puisif (jQuery.inArray(jQuery("input:first").val(), arr) != -1)
(à Noter que mon tableau original a été appelé "ar" et non pas "arr" . est le coupable ?Vous avez toujours besoin d'appeler
toLowerCase()
sur l'entréevalue
, par exemplejQuery("input:first").val().toLowerCase()
... peu stupide moi . Je l'ai eu il y a de @Fabrício Matté répondre, puis supprimé . Merci , tout fonctionne tout simplement génial . et plus important encore - j'ai réellement appris quelque chose 🙂 (vérifier le code de maîtres avant de dire qu'il ne fonctionne pas 🙂 )
OriginalL'auteur alex
Pour vérifier si un tableau contient un élément, de la casse, j'ai utilisé ce code:
Ici est un violon pour jouer avec
tableau de correspondance insensible à la casse
OriginalL'auteur Jose Manuel Gomez Alvarez