为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

holdtom 2021-09-30 15:01:10
我想知道如何使用 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'];
查看完整描述

2 回答

?
繁花如伊

TA贡献2012条经验 获得超12个赞

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


一些伪代码:


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

        }

    });

});


查看完整回答
反对 回复 2021-09-30
?
BIG阳

TA贡献1859条经验 获得超6个赞

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


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]}*`);

        }

      })


查看完整回答
反对 回复 2021-09-30
  • 2 回答
  • 0 关注
  • 342 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信