29
A
回答
23
您可以使用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;
}
});
1
不需要。您將不得不擺弄您的數據,我通常會將所有字符串都設爲小寫字母以便於比較。還有可能使用自定義比較函數來進行必要的轉換以使比較不區分大小寫。
1
可以遍歷數組和tolower每個元素和TOLOWER你要找的東西,但在那個時候,你可能也只是進行比較,而不是使用inArray()
1
看起來你可能不得不實施你自己的解決方案。 Here是向jQuery添加自定義函數的好文章。你只需要編寫一個自定義函數來循環和標準化數據,然後進行比較。
4
感謝@Drew Wills。
我重寫了它,因爲這:
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;
}
+1
這對我來說非常合適。 – Alan 2014-04-15 21:12:11
1
這些天,我更喜歡使用underscore的任務是這樣的:
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
24
如果有人想利用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. 不區分大小寫find()方法
- 2. 使區分大小寫不敏感的區分大小寫表
- 3. QHash :: contains方法是否區分大小寫或不區分大小寫?
- 4. Lucene如何區分大小寫和不區分大小寫
- 5. 區分大小寫的URL不區分大小寫
- 6. VB.NET不區分大小寫;很好的區分大小寫?
- 7. 如何使preg_quote不區分大小寫?
- 8. 如何使automapper不區分大小寫?
- 9. 如何使Oracle不區分大小寫
- 10. 如何使jquery不區分大小寫?
- 11. 如何使strpos不區分大小寫
- 12. 如何使lucene不區分大小寫
- 13. 如何使preg_match不區分大小寫?
- 14. 如何使String.Contains不區分大小寫?
- 15. 爲什麼區分大小寫和不區分大小寫?
- 16. 區分大小寫區分大小寫還是全大寫?
- 17. Java不區分大小寫的方法細分和解釋
- 18. 使我的rawinput不區分大小寫
- 19. 不區分大小寫
- 20. 不區分大小寫preg_replace_callback
- 21. distinctUnionOfObjects不區分大小寫
- 22. 不區分大小寫
- 23. System.IO.FileInfo不區分大小寫
- 24. MySQL不區分大小寫
- 25. 不區分大小寫Func
- 26. 不區分大小寫#define
- 27. 不區分大小寫OptionParser
- 28. FirebirdSql不區分大小寫
- 29. 不區分大小寫
- 30. CEDET:不區分大小寫?
您將要添加一個「返回false」;在if語句的末尾,因此在找到匹配元素後,'each'不會繼續。 (在jQuery.each()中,「return false;」與普通JavaScript循環中的「break;」等價。) – 2010-08-02 19:15:30
難道不是爲了低級別而是低級? – Sarfraz 2010-08-02 19:15:31
@Jordan和@Sarfraz:兩個好點 – 2010-08-02 19:28:11