我目前正在React.js中创建一个Table组件。我的目标是实现类似于https://www.datatables.net/使用的搜索功能。
下面是我使用过滤器的代码,包含Lodash库中的函数。此代码不起作用,因为它只查找完全匹配。例如,如果我的数据数组中的对象有水果:" apple",过滤器" app"没有比赛。
data = filter(data, (row) => {
return includes(row, this.state.filter);
});
有什么方法可以用lodash的内置函数实现模糊搜索?如果没有,你能建议另一种方式吗?
答案 0 :(得分:3)
lodash没有你需要的东西。根据您的搜索要求,您可以使用基于距离指标的搜索,例如Levenshtein。或者可能是substring长度指标。如需放入图书馆,请查看fuzzy
答案 1 :(得分:0)
因此,他们正在搜索名字和姓氏中的字符与您输入的字符匹配的位置。
在lodash中,您可以使用这样的过滤器..
.filter(contact => !(this.state.filter && contact.lastName.toLowerCase().indexOf(this.state.filter) == -1 && contact.firstName.toLowerCase().indexOf(this.state.filter) == -1))
这假设您将搜索值设置为状态,并且您希望匹配firstname / lastname字段。您应该能够修改它以满足您的需求。