Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/405.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 在数组中搜索与另一个数组中的字符串相似(近似匹配)的字符串_Javascript_Arrays_String_Similarity - Fatal编程技术网

Javascript 在数组中搜索与另一个数组中的字符串相似(近似匹配)的字符串

Javascript 在数组中搜索与另一个数组中的字符串相似(近似匹配)的字符串,javascript,arrays,string,similarity,Javascript,Arrays,String,Similarity,我想知道如何使用JavaScript在一个数组中找到与另一个数组中的字符串类似的字符串 我设法找到了与此完全匹配的: var arr = ['English Question Answering', 'Questions And Reviews Organic Milk', 'Facebook Page Discovery (En) - 1426357']; var keyword = ['English Question Answering', 'Facebook Page Discovery

我想知道如何使用JavaScript在一个数组中找到与另一个数组中的字符串类似的字符串

我设法找到了与此完全匹配的:

var arr = ['English Question Answering', 'Questions And Reviews Organic Milk', 'Facebook Page Discovery (En) - 1426357'];
var keyword = ['English Question Answering', 'Facebook Page Discovery (En)']

var ret = []
arr.forEach(val => {
    if (keyword.includes(val[1])) {
        ret.push(`*${val[0]}* - ***${val[1]}*** - Pay: *${val[3]}* - tasks: *${val[5]}*`)
    }
})
我如何使这项工作达到近似匹配,例如:

var arr = ['English Question Answering', 'Questions And Reviews Organic Milk', 'Facebook Page Discovery (En) - 1426357'];
var keyword = ['English Question Answering', 'Facebook Page Discovery (En)'];
我希望得到:

['English Question Answering', 'Facebook Page Discovery (En) - 1426357'];
查看此问题:

基本上,您必须编写一个函数来比较两个字符串(上面链接的问题中有一个示例函数),并循环两个数组,逐个比较字符串

一些伪代码:

function checkSimilarity(s1, s2) {
  // ... compare the strings s1 and s2
}

arrOne.forEach((s1) => {
    arrTwo.forEach((s2) => {
        if(checkSimilarity(s1, s2) > 0.5)
            console.log("Match found between" + s1 + " and " + s2);
            console.log(checkSimilarity(s1, s2));
        }
    });
});

假设你有构成相似性的规则,你可以这样做

var-ar=['English Question-Answering'、'Questions And Reviews Organic Milk'、'Facebook Page Discovery(En)-1426357'];
var关键字=[“英语问答”,“Facebook页面发现(En)”]
var ret=[]
功能类似(string1、string2){
返回(string1==string2)||
string1.包括(string2)||
string2.包括(string1)
}
ar.forEach(val=>{
if(关键字.some(word=>相似(val,word))){
ret.push(`*${val[0]}*-***${val[1]}***-支付:${val[3]}*-任务:${val[5]}*`);
}
})

类似是一个模糊的概念。如果您有特定的规则可以识别相似的东西,那么您可以创建一个函数,测试两个项目的相似性,并在
中使用它。查找
,而不是现在使用的
。包括
。如何定义“相似性”?整个学术论文都是关于语言相似性的。在您的示例中,您所需要做的就是
if(关键字.includes(val[1])|val[1]。includes(关键字)){…
(虽然我不清楚索引在那里的确切用途,因为
val[1]
是“n”、“u”或“a”。@heerticmonkey
keyword
是另一个数组,所以
val[1]。includes(关键字)
不起作用。@GabrielePetrioli对,它必须更像是
关键字。一些(kw=>val[1]。包括(kw))
,但其思想是在一个数组的每个值中搜索另一个数组的每个值。使用fire.js查看url