首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何设置fuse.js选项

如何设置fuse.js选项
EN

Stack Overflow用户
提问于 2018-08-28 15:33:08
回答 2查看 7.2K关注 0票数 2

代码语言:javascript
复制
const JSON = [
  {
    "name": "01,02"
  },
  {
    "name": "01"
  },
  {
    "name": "05"
  },
  {
    "name": "06,09"
  },
  {
    "name": "04,05"
  },
  {
    "name": "02,03"
  },
  {
    "name": "02,04,05"
  },
  {
    "name": "01,02"
  },
  {
    "name": "01,03"
  }
]


function foo (str) {
  const options = {
    keys: ['name'],
    threshold: 0,
    location: 0,
    distance: 100,
    minMatchCharLength: str.length
  }
  const _fuse = new Fuse(JSON, options)
  console.log(_fuse.search(str))
}

foo('03')
代码语言:javascript
复制
<script src="https://cdnjs.cloudflare.com/ajax/libs/fuse.js/3.2.1/fuse.min.js"></script>

我正在尝试使用fuse.js进行过滤。我不知道如何使用这些选项。如果我使用03搜索,我不会返回任何结果。我试过改变位置和门槛,但没有完全理解它。我将minMatchCharLength设置为查询字符串的长度,这将阻止01查询返回仅包含0的项。对吗?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2018-08-29 09:44:23

你的代码已经很好了。将阈值设置为0,这意味着

代码语言:javascript
复制
fuse requires a perfct match (of both letters and location)

而且没有name属性,它就是03

因此,如果您只篡改阈值并将其设置为0.2,您将从搜索中获得一些结果:

代码语言:javascript
复制
[{name: "02,03"}, {name: "01,03"}]
票数 1
EN

Stack Overflow用户

发布于 2018-08-29 06:38:27

尝试将"name"更改为name

代码语言:javascript
复制
const JSON =  [
  {
    name: "01,02"
  },
  {
    name: "01"
  },
  {
    name: "05"
  },
  {
    name: "06,09"
  },
  {
    name: "04,05"
  },
  {
    name: "02,03"
  },
  {
    name: "02,04,05"
  },
  {
    name: "01,02"
  },
  {
    name: "01,03"
  }
];

在这里,您可以找到一个演示,让您‘玩’的配置。您可以粘贴您的json并尝试获得不同的结果:链接

有关配置的详细信息,请参阅前面链接的步骤2,其中解释了所有选项。阈值:匹配算法在什么时候放弃。一个0.0的阈值需要一个完美的匹配(字母和位置),阈值1.0可以匹配任何东西

下面是一个示例演示:小提琴

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/52061588

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档