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



我想知道如何在一个数组中找到类似于另一个数组中的字符串使用 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'];

看看这个问题: 比较字符串 Javascript 返回 %的可能

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

一些伪代码:

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 keyword = ['English Question Answering', 'Facebook Page Discovery (En)']
var ret = []
function similar(string1, string2) {
return (string1 === string2) ||
string1.includes(string2) ||
string2.includes(string1)
}
ar.forEach(val => {
if (keyword.some(word => similar(val, word))) {
ret.push(`*${val[0]}* - ***${val[1]}*** - Pay: *${val[3]}* - tasks: *${val[5]}*`);
}
})

最新更新