gpt4 book ai didi

javascript - 结合使用 filter() 和 includes() 来获得部分匹配

转载 作者:行者123 更新时间:2023-12-05 08:41:48 25 4
gpt4 key购买 nike

我有一个数组,其中包含我要搜索的对象。可搜索数组如下所示:

[
{ value: 0, label: 'john' },
{ value: 1, label: 'johnny' },
{ value: 2, label: 'peter' },
{ value: 3, label: 'peterson' }
]

我使用 Lodash 过滤器方法搜索:

search = (text) => {
let results = _.filter(
this.props.options,
{ label: text }
);
}

这仅显示与搜索查询(text 参数)完全匹配的结果。我需要通过部分匹配来完成这项工作。因此,如果我插入 jjohnny,它应该能够同时找到“John”和“Johnny”。

我试过:

search = (text) => {
let results = _.filter(
this.props.options =>
this.props.options.includes({ label: text })
);
}

但是,运气不好。没有错误也没有结果。我怎样才能使它工作?

最佳答案

由于您使用的是 ES6 标准的一部分 includes,因此我将使用 ES6 Array.prototype.filter 解决此任务而不是 lodash-filter:

let search = (list, text) =>
list.filter(i => i.label.toLowerCase().includes(text.toLowerCase()));

let list = [
{ value: 0, label: 'john' },
{ value: 1, label: 'johnny' },
{ value: 2, label: 'peter' },
{ value: 3, label: 'peterson' }
];

let result = search(list, 'j');

console.log(result); // [{value: 0, label: "john"}, {value: 1, label: "johnny"}]

此外,对于 .toLowerCase,您可以使用“John”而不是“john”。

关于javascript - 结合使用 filter() 和 includes() 来获得部分匹配,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47458697/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com