javascript - 这是在 JavaScript 数组中搜索名称的正确方法吗?
问题描述
我正在尝试通过 React JS 实现一个动态列表视图,而不使用任何现成的组件。我需要一个简单的搜索来通过他们的名字找到用户,我应该管理这个问题......
例如,我认为并编写了以下代码:
var students = [
{
name: 'David',
age: 12
},
{
name: 'Daniel',
age: 13
},
{
name: 'Alex',
age: 10
}
];
var key = 'Da';
function search(item) {
return item.name.substring(0, key.length) == key;
}
var result = students.filter(search);
在这种情况下,我应该搜索数组并且我没有任何 API 来处理查询和管理搜索。
性能和最佳实践对我来说非常重要......
那么,是否使用优化的过滤器和子字符串来实现自定义简单搜索?如果我有一个超过 1000 个索引的大数组!
谢谢
解决方案
您可以像这样使用Array.filter和Array.includes:
var students = [ { name: 'David', age: 12 }, { name: 'Daniel', age: 13 }, { name: 'Alex', age: 10 } ];
let searchByFirstName = str => students.filter(({name}) => name.includes(str))
console.log(searchByFirstName('Da'))
console.log(searchByFirstName('ex'))
console.log(searchByFirstName('iel'))
这将检查名称是否在任何“位置”包含指定的字符串。如果您只关心字符串的开头,您可以使用String.startsWith:
var students = [ { name: 'David', age: 12 }, { name: 'Daniel', age: 13 }, { name: 'Alex', age: 10 } ];
let searchByFirstName = str => students.filter(({name}) => name.startsWith(str))
console.log(searchByFirstName('Da'))
console.log(searchByFirstName('A'))
推荐阅读
- image - 训练、测试和标记单独的文件夹
- javascript - 我想通过使用脚本来避免谷歌表格中的重复日期
- python - 我哪里做错了?(我是初学者),我该如何做对?
- python - Python - 如何在不使用堆栈和类的情况下检查有向无环图?
- python - 如何使用python在数据框中查找带有空格的行?
- python - 我想使用 pyglet 在新窗口中显示五个数字
- python - Python 分析计算机视觉输出
- autocomplete - 是否有任何具有自动完成功能的 Gauge 网络编辑器?
- talend - 如何在 Talend Open Studio for Data Quality 中根据组合在一起的两列查找重复记录?
- python - TypeError: unhashable type: 'list' for mlb