Le titre le résume.Un moyen de rendre insensible jQuery.inArray() à la casse?
Répondre
Vous pouvez utiliser each() ...
// Iterate over an array of strings, select the first elements that
// equalsIgnoreCase the 'matchString' value
var matchString = "MATCHME".toLowerCase();
var rslt = null;
$.each(['foo', 'bar', 'matchme'], function(index, value) {
if (rslt == null && value.toLowerCase() === matchString) {
rslt = index;
return false;
}
});
Non. Vous devrez manipuler vos données, je fais habituellement toutes mes chaînes en minuscules pour faciliter les comparaisons. Il y a aussi la possibilité d'utiliser une fonction de comparaison personnalisée qui ferait les transformations nécessaires pour rendre le cas de comparaison insensible.
pourrait boucle à travers le réseau et toLower chaque élément et toLower ce que vous cherchez, mais à ce moment, vous pouvez tout aussi bien le comparer au lieu d'utiliser InArray()
Il semblerait que vous deviez implémenter votre propre solution. Here est un bon article sur l'ajout de fonctions personnalisées à jQuery. Vous aurez juste besoin d'écrire une fonction personnalisée pour boucler et normaliser les données puis les comparer.
Merci à @Drew Wills.
Je réécrite comme ceci:
function inArrayCaseInsensitive(needle, haystackArray){
//Iterates over an array of items to return the index of the first item that matches the provided val ('needle') in a case-insensitive way. Returns -1 if no match found.
var defaultResult = -1;
var result = defaultResult;
$.each(haystackArray, function(index, value) {
if (result == defaultResult && value.toLowerCase() == needle.toLowerCase()) {
result = index;
}
});
return result;
}
Cela a fonctionné parfaitement pour moi. – Alan
Ces jours-ci, je préfère utiliser underscore pour des tâches comme ceci:
a = ["Foo","Foo","Bar","Foo"];
var caseInsensitiveStringInArray = function(arr, val) {
return _.contains(_.map(arr,function(v){
return v.toLowerCase();
}) , val.toLowerCase());
}
caseInsensitiveStringInArray(a, "BAR"); // true
Dans le cas où quelqu'un voulait une approche plus intégrée à l'aide jquery:
(function($){
$.extend({
// Case insensative $.inArray (http://api.jquery.com/jquery.inarray/)
// $.inArrayIn(value, array [, fromIndex])
// value (type: String)
// The value to search for
// array (type: Array)
// An array through which to search.
// fromIndex (type: Number)
// The index of the array at which to begin the search.
// The default is 0, which will search the whole array.
inArrayIn: function(elem, arr, i){
// not looking for a string anyways, use default method
if (typeof elem !== 'string'){
return $.inArray.apply(this, arguments);
}
// confirm array is populated
if (arr){
var len = arr.length;
i = i ? (i < 0 ? Math.max(0, len + i) : i) : 0;
elem = elem.toLowerCase();
for (; i < len; i++){
if (i in arr && arr[i].toLowerCase() == elem){
return i;
}
}
}
// stick with inArray/indexOf and return -1 on no match
return -1;
}
});
})(jQuery);
- 1. Rendre Entity Framework insensible à la casse
- 2. Comment rendre WPF insensible à la casse?
- 3. Comment rendre ma casse d'URL insensible à la casse?
- 4. Comment rendre ce casse de tri insensible?
- 5. Insensible à la casse GetMethod?
- 6. Comment rendre is_dir ($ FoLdEr) insensible à la casse en php?
- 7. Dictionnaire insensible à la casse
- 8. Apache: redirection permanente insensible à la casse?
- 9. insensible à la casse preg_replace_callback
- 10. Comparaison insensible à la casse
- 11. recherche insensible à la casse de MySQL?
- 12. Insensible à la casse Requêtes ClearQuest
- 13. Recherche de chaîne insensible à la casse
- 14. insensible à la casse interrupteur cas
- 15. Insensible à la casse indexOfObject pour NSArray
- 16. ArrayList & contains() - insensible à la casse
- 17. Recherche de dictionnaire insensible à la casse?
- 18. XmlSerializer -> insensible à la casse
- 19. django-orm insensible à la casse par
- 20. Comment rendre Array.Contain insensible à la casse sur un tableau de chaînes?
- 21. tableau insensible à la casse recherche
- 22. recherche insensible à la casse en php
- 23. recherche LDAP insensible à la casse
- 24. Chaîne insensible à la casse C#
- 25. Une liste insensible à la casse
- 26. NSClassFromString Insensible à la casse Objectif-C
- 27. MySQL regex insensible à la casse
- 28. OledbDriver faisant insensible à la casse LIKE
- 29. insensible à la casse « dans » - Python
- 30. Urls insensible à la casse pour Django?
Vous voulez ajouter un "return false"; à la fin de cette instruction if, le 'each' ne continue pas après la recherche d'un élément correspondant. (Dans jQuery.each() "return false;" est équivalent à "break;" dans une boucle JavaScript régulière.) –
N'est-ce pas toLowerCase plutôt que toLower? – Sarfraz
@Jordan et @Sarfraz: les deux points positifs –