Javascript对象数组,基于部分字符串或子字符串进行搜索匹配

泰亚卜·拉赫曼(Tayyab Rahman)

我正在尝试创建一个搜索框,用户在其中键入搜索查询,然后下拉菜单开始显示匹配结果。我正在尝试下面的函数,该函数的确基于quoteCategory,quoteText或quoteAuthorName返回匹配的值。问题是,仅当查询在具有精确的对象数组中匹配时才返回对象,例如,如果用户键入LOVE,它将匹配并在下拉列表中显示结果,但是当用户键入LOVE任何其他字符时,它不返回显示任何结果。

我要实现的目标是,如果有任何单词与对象数组中的用户查询匹配,它将返回结果。基本上匹配应基于部分字符串或子字符串。

import React from 'react'

 
export const GlobalSearch = () => {

    const [textQuote, setTextQuote] = useContext({
{
            userId: '123',
            quoteAuthorName: 'Any Two',
            quoteCategory: 'Motivational',
            quoteType: 'textQuote',
            quoteText: 'If there’s no',
            
        },
        {
            userId: '124',
            quoteAuthorName: 'Any One',
            quoteCategory: 'Love',
            quoteType: 'textQuote',
            quoteText: 'If there’s no market, then it may not be one',
        }
)
    const [searchTerm, setSearchTerm] = useState("");

let resultsObj = textQuote.filter(quote =>
            quote.quoteCategory.toLowerCase().includes(searchTerm.toLowerCase())
            || quote.quoteAuthorName.toLowerCase().includes(searchTerm.toLowerCase())
            || quote.quoteText.toLowerCase().includes(searchTerm.toLowerCase())
        );
}
拉斐尔

您可以在正则表达式中转换字符串。使用香草Javascript的示例:

textQuote = [
                {
            userId: '123',
            quoteAuthorName: 'Any Two',
            quoteCategory: 'Motivational',
            quoteType: 'textQuote',
            quoteText: 'If there’s no',
            
        },
        {
            userId: '124',
            quoteAuthorName: 'Any One',
            quoteCategory: 'Love',
            quoteType: 'textQuote',
            quoteText: 'If there’s no market, then it may not be one',
        }
];
let searchTerm = "love is blind";

let searchArray = searchTerm.trim().split(" ");

let re = new RegExp(searchArray.join("|"), "i");

let resultsObj = textQuote.filter(quote =>
    re.test(quote.quoteCategory) ||
    re.test(quote.quoteAuthorName) ||
    re.test(quote.quoteText)
);

document.write(JSON.stringify(resultsObj));

输出:

[{"userId":"124","quoteAuthorName":"Any One","quoteCategory":"Love","quoteType":"textQuote","quoteText":"If there’s no market, then it may not be one"}]

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如果值与字符串或子字符串匹配,则搜索对象数组并返回整个对象

基于列表的部分字符串匹配

数组中的部分字符串匹配

Javascript搜索数组中的部分字符串

在 Javascript 中使用部分字符串匹配过滤数组

JavaScript部分匹配数组中的字符串

基于部分字符串的Javascript getElementById

筛选匹配字符串的JavaScript字符串数组

Javascript用子字符串搜索匹配两个数组

过滤字符串数组,仅获取与搜索到的字符串匹配的字符串

javascript-在对象数组中搜索字符串

javascript过滤字符串数组,匹配不区分大小写的子字符串

JavaScript中基于字符串+数值对对象数组进行排序

自定义排序数组以基于字符串对对象进行排序-Javascript

需要基于其他字符串数组对数组对象进行排序并删除不匹配的对象

如何基于每个对象中的字符串属性数组对数组中的对象进行深层比较/匹配?

对象数组中的子字符串

JavaScript数组搜索并删除字符串?

C ++基于子字符串的部分匹配,将字符串作为向量中的重复项删除

数组或部分中的Javascript字符串

搜索匹配字符序列的字符串数组

搜索字符串数组

搜索字符串数组

将数组与字符串进行比较(匹配字符串的一部分)

Javascript字符串对象数组

在搜索字符串中包含打字稿/ JavaScript中的通配符的字符串时,在数组上进行搜索?

Pandas DataFrame基于列表的部分字符串匹配

基于部分字符串匹配的子集数据框

R:“ vlookup”基于R中的部分字符串匹配