猿问

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

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


holdtom
浏览 343回答 2
2回答

繁花如伊

基本上,您必须编写一个函数来比较两个字符串(上面链接的问题中有一个示例函数)并循环遍历两个数组,一个一个比较字符串。一些伪代码: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));        }    });});

BIG阳

假设你有什么构成相似性的规则,你可以做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]}*`);        }      })
随时随地看视频慕课网APP

相关分类

JavaScript
我要回答