如何在JavaScript中准确地按名字或姓氏或名字和姓氏进行搜索?
有一个函数,它接受每个输入的文本值 有一个充满用户对象的数组 我需要通过数组进行映射,得到精确的值 例如,如果我写“H”或“H”,我只会找到汉娜·蒙塔纳,如果写“A”或“A”,我会得到“亚历山大·卡斯尔”和“安东尼·霍普金斯”等等如何在JavaScript中准确地按名字或姓氏或名字和姓氏进行搜索?,javascript,algorithm,reactjs,search,mapping,Javascript,Algorithm,Reactjs,Search,Mapping,有一个函数,它接受每个输入的文本值 有一个充满用户对象的数组 我需要通过数组进行映射,得到精确的值 例如,如果我写“H”或“H”,我只会找到汉娜·蒙塔纳,如果写“A”或“A”,我会得到“亚历山大·卡斯尔”和“安东尼·霍普金斯”等等 function foo(value) { // code here } const users = [{ name: 'Alexander Castle', age: 25 }, { name: 'Anthony Hopkins', age: 60
function foo(value) {
// code here
}
const users = [{ name: 'Alexander Castle', age: 25 }, { name: 'Anthony
Hopkins', age: 60 }, { name: 'Naomi Kempbell', age: 37 }, { name:
'Hannah Montanna', age: 19 }];
这可能是您的解决方案:
function search(term, users) {
term = term.toLowerCase();
return users.filter(u => u.name.toLowerCase().startsWith(term));
}
const users = [{
name: 'Alexander Castle',
age: 25
}, {
name: 'Anthony Hopkins',
age: 60
}, {
name: 'Naomi Kempbell',
age: 37
}, {
name: 'Hannah Montanna',
age: 19
}];
console.log(search('a',users));
上面的答案很好,但不需要使用小写的term参数并用相同的小写值替换它的值。所以你可以简单地像这样写
function search(term, users) { return users.filter(u => u.name.toLowerCase().startsWith(term.toLowerCase())); }
严格值在Javascript中并不真正意味着什么,尽管存在严格模式。您能发布您迄今为止尝试过的内容吗?对于staters:@CertainPerformance,我已经完成了以下handleSearch搜索:functionevent{var searchQuery=event.target.value.toLowerCase;var displayedContacts=CONTACTS.filterfunctionel{var searchValue=el.name.toLowerCase;返回searchValue.indexOfsearchQuery!==-1;};this.setState{displayedContacts:displayedContacts};}不幸的是,我没有得到我真正想要的want@user7245021,将你在问题中尝试过的内容张贴出来,而不是作为评论,这样其他人就可以轻易地看到。他确实希望大写搜索词也能起作用——将搜索词转换为小写。现在,搜索词也可以转换为小写。我认为一次声明小写词比为小写词更优雅如果问题是参数重新分配,另一件事就是简单地声明一个新变量lowerTerm