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')<script src="https://cdnjs.cloudflare.com/ajax/libs/fuse.js/3.2.1/fuse.min.js"></script>
我正在尝试使用fuse.js进行过滤。我不知道如何使用这些选项。如果我使用03搜索,我不会返回任何结果。我试过改变位置和门槛,但没有完全理解它。我将minMatchCharLength设置为查询字符串的长度,这将阻止01查询返回仅包含0的项。对吗?
发布于 2018-08-29 09:44:23
你的代码已经很好了。将阈值设置为0,这意味着
fuse requires a perfct match (of both letters and location)而且没有name属性,它就是03。
因此,如果您只篡改阈值并将其设置为0.2,您将从搜索中获得一些结果:
[{name: "02,03"}, {name: "01,03"}]发布于 2018-08-29 06:38:27
尝试将"name"更改为name
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可以匹配任何东西
下面是一个示例演示:小提琴
https://stackoverflow.com/questions/52061588
复制相似问题