在javascript中搜索数组时忽略大小写
我只是想在做搜索的时候忽略这个案例什么是最好的方法?(请不要用Jquery)在javascript中搜索数组时忽略大小写,javascript,Javascript,我只是想在做搜索的时候忽略这个案例什么是最好的方法?(请不要用Jquery) 函数搜索(searchValue){ 发现的var=[]; 对于(var i=0;i
函数搜索(searchValue){
发现的var=[];
对于(var i=0;i
我尝试了
搜索(searchValue.ignoreCase)
但它返回了所有大写字母的副本。有什么建议吗?我想忽略photoData描述的大小写,只要您不处理Unicode字符(因为某些大小写转换在某些支持Unicode的语言中意外工作),请执行以下操作:
if (photoData[i].description.toUpperCase() === searchValue.toUpperCase()) {
your code
}
或者,只要不处理Unicode字符,就可以使用toLowerCase…(在某些支持Unicode的语言中,某些大小写转换会意外工作),请执行以下操作:
if (photoData[i].description.toUpperCase() === searchValue.toUpperCase()) {
your code
}
或者您可以使用toLowerCase…创建一个
新RegExp
并使用不区分大小写的标志,如:
function search(array, searchValue) {
var matchedValues, re, i, j, cur;
matchedValues = [];
re = new RegExp(searchValue, "i");
for (i = 0, j = array.length; i < j; i++) {
cur = array[i];
if (cur.description.search(re) !== -1) {
matchedValues.push(cur);
}
}
return matchedValues;
}
演示:
参考:
:Array.filter
:RegExp
新RegExp
并使用不区分大小写的标志,如:
function search(array, searchValue) {
var matchedValues, re, i, j, cur;
matchedValues = [];
re = new RegExp(searchValue, "i");
for (i = 0, j = array.length; i < j; i++) {
cur = array[i];
if (cur.description.search(re) !== -1) {
matchedValues.push(cur);
}
}
return matchedValues;
}
演示:
参考:
:Array.filter
:RegExp
- 这里是一个来自
函数搜索数组(元素,数组){
var len=array.length,str=element.toString().toLowerCase();
对于(变量i=0;i
}以下是
函数搜索数组(元素,数组){
var len=array.length,str=element.toString().toLowerCase();
对于(变量i=0;i
}好吧,你可以创建一个正则表达式对象并使其成为不区分大小写的搜索:
if(photoData[i].description.search(new RegExp(searchValue,“i”)!=-1{
效果非常好!好吧,你可以创建一个正则表达式对象并使其成为不区分大小写的搜索:if(photoData[i].description.search(new RegExp(searchValue,“i”)!=-1){
效果非常好!这样做比reg-ex方法更好(可读性更强),并且+1指出了Unicode的潜在问题。@GoloRoden您喜欢一个不符合预期的解决方案吗?.toUppercase()===.toUppercase()
与.search()做的事情不同
@GoloRoden没什么大不了的。我想到的第一件事就是也这么做。但后来我意识到.search()
在做什么,我知道这种方法不能比reg-ex方法做得更好(可读性更强),以及+1来指出Unicode的潜在问题。@GoloRoden你喜欢一个不符合预期的解决方案吗?.toUppercase()===.toUppercase()
与.search()
@GoloRoden没有什么大不了的。我想到的第一件事就是也这样做。但后来我意识到了什么.search()
当时正在做,并且知道这种方法不能用来做同样的事情。我只是使用了注释中的代码,效果很好!谢谢,伙计。也许可以将新的RegExp移出循环?@dc5是的,废话,很好。我在第二个示例中这样做,不知道为什么我在第一个示例中没有这样做。谢谢!我只是使用了注释中的代码,效果很好很好!谢谢伙计。也许把新的RegExp移出循环?@dc5是的,废话,很好。我在第二个例子中这么做了,不知道为什么我在第一个例子中没有。谢谢!
function SearchArray( element, array ) {
var len = array.length, str = element.toString().toLowerCase();
for ( var i = 0; i < len; i++ ) {
if ( array[i].toLowerCase() == str ) { return i; }
}
return -1;