如何解决使用JavaScript搜索名称
| 当我在该字段中键入G时,它将过滤掉名称中包含g的所有名称。我只想过滤以G开头的内容。要进行排序,我添加了类似的内容。patientSearchResult[i].LastName.toUpperCase().charAt(0)
但是现在当我输入Gr。我没有得到格雷格的成绩...为什么?
解决方法
您可以为此使用正则表达式和数组过滤器。尝试这个:
var patients = [
\"Greg\",\"Anna\",\"Slartibartfarst\"
];
var input = \"Gr\";
var re = new RegExp(input+\'.+$\',\'i\');
patients = patients.filter(function(e,i,a){
return e.search(re) != -1;
});
console.log(patients);
http://jsfiddle.net/2R44X/
, charAt仅返回指定索引处的字符。
您可以使用patientSearchResult[i].LastName.toUpperCase().substr(0,2)
,其中2
应该替换为您要搜索的字符串的长度。
, 对于更通用的解决方案,可以将Array.filter与regexp搜索结合使用以生成查询功能:
var patientRecord = [
{firstname: \'Bob\',lastname: \'Grown\'},{firstname: \'Alexa\',lastname: \'Ace\'},{firstname: \'Chris\',lastname: \'Green\'}
];
var makeQuery = function(property,regexp) {
// return a callback function for filter,see MDC docs for Array.filter
return function(elem,index,array) {
return elem[property].search(regexp) !== -1;
};
};
var q = makeQuery(\'lastname\',/^g/i); // ^ = from beginning,i = \"ignore case\"
patientRecord.filter(q);
控制台输出:
[
{
firstname: \"Bob\",lastname: \"Grown\",__proto__: Object
},{
firstname: \"Chris\",lastname: \"Green\",__proto__: Object
}
]
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。