Any Way To Make JQuery.inArray() Case Insensitive?


Answer :

In case anyone wanted a more integrated approach using 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); 

You can use 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;   } }); 

Thank you to @Drew Wills.

I rewrote it as this:

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; } 

Comments

Popular posts from this blog

Are Regular VACUUM ANALYZE Still Recommended Under 9.1?

Can Feynman Diagrams Be Used To Represent Any Perturbation Theory?