Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/381.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在JavaScript中准确地按名字或姓氏或名字和姓氏进行搜索?_Javascript_Algorithm_Reactjs_Search_Mapping - Fatal编程技术网

如何在JavaScript中准确地按名字或姓氏或名字和姓氏进行搜索?

如何在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

有一个函数,它接受每个输入的文本值

有一个充满用户对象的数组

我需要通过数组进行映射,得到精确的值

例如,如果我写“H”或“H”,我只会找到汉娜·蒙塔纳,如果写“A”或“A”,我会得到“亚历山大·卡斯尔”和“安东尼·霍普金斯”等等

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