首页 > 解决方案 > 在数组中搜索与另一个数组中的字符串相似(近似匹配)的字符串

问题描述

我想知道如何使用 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'];

标签: javascriptarraysstringsimilarity

解决方案


检查这个问题:Compare Strings Javascript Return %of Likely

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

一些伪代码:

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));
        }
    });
});

推荐阅读