使用Lodash在React中进行数据过滤

时间:2015-12-04 23:31:00

标签: reactjs search lodash

我目前正在React.js中创建一个Table组件。我的目标是实现类似于https://www.datatables.net/使用的搜索功能。

下面是我使用过滤器的代码,包含Lodash库中的函数。此代码不起作用,因为它只查找完全匹配。例如,如果我的数据数组中的对象有水果:" apple",过滤器" app"没有比赛。

  data = filter(data, (row) => {
    return includes(row, this.state.filter);
  });

有什么方法可以用lodash的内置函数实现模糊搜索?如果没有,你能建议另一种方式吗?

2 个答案:

答案 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字段。您应该能够修改它以满足您的需求。