Javascript 两个数组的部分匹配求交

Javascript 两个数组的部分匹配求交,javascript,arrays,Javascript,Arrays,假设我有以下数组: var array_full = ['table', 'sleeping', 'data']; var array_part = ['sleep', 'able']; 现在,我想从带有完整字符串的数组中筛选出项目array\u full,如果它们包含来自带有部分字符串的数组的项目array\u part 我可以这样做: var rez = []; for (p in array_part) { array_full.filter(function(f) { if

假设我有以下数组:

var array_full = ['table', 'sleeping', 'data'];
var array_part = ['sleep', 'able'];
现在,我想从带有完整字符串的数组中筛选出项目array\u full,如果它们包含来自带有部分字符串的数组的项目array\u part

我可以这样做:

var rez = [];
for (p in array_part) { 
    array_full.filter(function(f) { if (f.indexOf(array_part[p]) > -1) {rez.push(f)} } ) 
}
但我相信有更好的办法,不是吗


编辑:谢谢大家

您可以筛选数组并使用

用于过滤数组_,使用 用于查找数组的一部分 ,检查一个字符串是否包含另一个字符串。 var array_full=[“表”、“睡眠”、“数据”], 数组_part=['sleep','able'], 结果=array\u full.filters=>array\u part.somep=>s.includesp;
console.logresult 您可以使用筛选数组并查找零件包含

用于过滤数组_,使用 用于查找数组的一部分 ,检查一个字符串是否包含另一个字符串。 var array_full=[“表”、“睡眠”、“数据”], 数组_part=['sleep','able'], 结果=array\u full.filters=>array\u part.somep=>s.includesp; console.logresult 你可以这样使用:

var rez = [];
for (p in array_part) { 
    array_full.filter(function(f) { if (f.indexOf(array_part[p]) > -1) {rez.push(f)} } ) 
}
常量数组_full=[‘表’、‘睡眠’、‘数据’]; 常量数组_part=['sleep','able']; const output=array\u full.filtera=>array\u part.someb=>a.includesb console.logoutput您可以这样使用:

var rez = [];
for (p in array_part) { 
    array_full.filter(function(f) { if (f.indexOf(array_part[p]) > -1) {rez.push(f)} } ) 
}
常量数组_full=[‘表’、‘睡眠’、‘数据’]; 常量数组_part=['sleep','able']; const output=array\u full.filtera=>array\u part.someb=>a.includesb
console.logoutput如果您的用例实际上是在字符串中查找字符串:


如果您的用例实际上是在字符串中查找字符串,那么您可以从array_part构建正则表达式:


如果您知道部分单词是由单词字符组成的,并且不包含像*、$这样的正则表达式的特殊字符,那么您可以从array_part构建正则表达式。等等,您可以将数组_部分编译成正则表达式:

var数组_full=[“表”、“睡眠”、“数据”]; var数组_part=['sleep','able']; 让rx=new RegExparray_part.join'|'
console.logarray_full.filterw=>rx.testw如果您知道部分单词由单词字符组成,并且不包含像*、$这样的正则表达式的特殊字符。等等,您可以将数组_部分编译成正则表达式:

var数组_full=[“表”、“睡眠”、“数据”]; var数组_part=['sleep','able']; 让rx=new RegExparray_part.join'|' console.logarray_full.filterw=>rx.testw var数组_full=[“表”、“睡眠”、“数据”]; var数组_part=['sleep','able']; var rez=array\u full.filteritem=>array\u part.somestr=>item.includesstr; console.logrez var数组_full=[“表”、“睡眠”、“数据”]; var数组_part=['sleep','able']; var rez=array\u full.filteritem=>array\u part.somestr=>item.includesstr;
console.logrez;仅当字符串不包含正则表达式的任何特殊字符时,whis才起作用。仅当字符串不包含正则表达式的任何特殊字符时,whis才起作用。很抱歉,后续操作延迟,但是如果我需要根据提供的数组\u部分的顺序筛选出这些数组\u完整项,该怎么办?比如,['sleeping','table',而不是['table','sleeping']。正如在文章中所做的那样,迭代数组_部件列表显然允许这样做。但不幸的是,这不是你那本不错的单行本。有什么解决办法吗?谢谢:有点复杂。你只有一个匹配项吗?对不起,一个匹配项是什么意思?array\u part有两个项目,它们部分匹配array\u full…ad 2中的项目,然后您希望按什么顺序?请参阅编辑。很抱歉后续操作延迟,但是如果我需要根据array\u part提供的顺序筛选出这些array\u full项目,该怎么办?比如,['sleeping','table',而不是['table','sleeping']。正如在文章中所做的那样,迭代数组_部件列表显然允许这样做。但不幸的是,这不是你那本不错的单行本。有什么解决办法吗?谢谢:有点复杂。你只有一个匹配项吗?对不起,一个匹配项是什么意思?array_part有两个项目,它们部分匹配array_full…ad 2中的项目,然后您希望按什么顺序排列?请参阅编辑。