我有一个名为雇员名称的数组,例如。字符串和返回匹配的搜索数组^
var names = ['Jordan,Michael','Davis,Jordan','Franco,James','Rogen,Seth','Griffin,Peter','James,Tim',..]
我想一个功能添加到我的网页,以允许用户键入他们正在寻找的名称,可以看到大家用这个名字。所以如果用户输入乔丹。乔丹,迈克尔和戴维斯都会回来。
有没有一种方法可以用javascript/jquery来做到这一点?
我有一个名为雇员名称的数组,例如。字符串和返回匹配的搜索数组^
var names = ['Jordan,Michael','Davis,Jordan','Franco,James','Rogen,Seth','Griffin,Peter','James,Tim',..]
我想一个功能添加到我的网页,以允许用户键入他们正在寻找的名称,可以看到大家用这个名字。所以如果用户输入乔丹。乔丹,迈克尔和戴维斯都会回来。
有没有一种方法可以用javascript/jquery来做到这一点?
var search = 'Jordan';
var names = ['Jordan,Michael','Davis,Jordan','Franco,James','Rogen,Seth','Griffin,Peter','James,Tim']
var results = names.filter(name => name.indexOf(search) > -1);
console.log(results);
对于情况下,敏感的比赛,你需要使用正则表达式。
下面的代码片断假定有两个针和草堆只使用字母数字字符。特殊字符可以通过一个简单的替换被删除,str = str.replace(/[^a-zA-Z0-9]/g, '');
注:要允许特殊字符,它们需要进行转义。
var names = ['Jordan,Michael','Davis,Jordan','Franco,James','Rogen,Seth','Griffin,Peter','James,Tim']
var search = 'jorDan' // cAsE-InsEnsItIvE
regex = new RegExp(search, 'i');
var results = names.filter(name => regex.test(name));
console.log(results);
document.body.innerHTML = '<pre>' + JSON.stringify(results, 0, 4) + '</pre>';
尝试为对象的一个这样的数组:
var names = [
{firstName:'Jordan', lastName:'Michael'},
{firstName:'Davis', lastName:'Jordan'},
]
var searchedName = "Jordan";
var result = names.filter(function(searchedName) {
return names.firstName == searchedName || names.lastName == searchedName;
});
这是一个模糊搜索领域,我想不出任何名字所以这一块有三个蒂姆斯以说明这一点。
它使用正则表达式来匹配当前输入到输入字段中的字母。
var names = [
'Jordan,Michael',
'Davis,Jordan',
'Franco,James',
'Rogen,Seth',
'Griffin,Peter',
'James,Tim',
'Burton,Tim',
'Allen,Tim'
];
var
input = document.querySelector('#input'),
results = document.querySelector('#results');
input.addEventListener('keyup', function(e) {
filterNames(this.value);
});
// init the filter;
filterNames('');
// helper to filter the names array by a value
function filterNames(value){
results.innerHTML = names.filter(function(name) {
return name.match(new RegExp(value.split('').join('.*'), 'ig'));
}).reduce(function(str, name) {
return str + '<li>' + name + '</li>';
}, '');
}
<input type="text" id="input">
<ul id="results"></ul>
是的,你可以做到这一点。 – Grumpy
请参阅[“应该在其标题中包含”标签“?”](http://meta.stackexchange.com/questions/19190/should-questions-include-tags-in-their-titles),其中共识是“不,他们不应该”! –
'var matches = result.filter(e => e.indexOf('Jordan')!== -1);' – Tushar