我试图从array中检索每个匹配的单词,但是.match
返回了一个未定义的函数,我确信我不需要转换任何东西,因为我正在比较两个字符串:
var hashtags = [ '#hr', '#acc', '#sales' ];
var message = "hello there #hr #acc";
var filteredMessage = _.filter( message.split( ' ' ), value => value.match( hashtags ) );
// suppose to return [ '#hr', '#acc' ]
5条答案
按热度按时间nlejzf6q1#
match()的使用不正确。这个函数接受一个正则表达式作为参数,而你使用的是一个数组。
您可以通过检查
value
是否是数组的元素之一来实现您想要的结果。下面是一个例子:
z9ju0rcb2#
你尝试做的事情的问题是,hashtags是一个数组,而match是一个正则表达式,所以我不认为这是你想要使用的方法。
另一种解决方案是使用lodash提供的交集函数
如果您确实想使用正则表达式(和match),我认为您可能必须循环两个数组以获得交集。
o2gm4chl3#
下面是我的作品
var filteredMessage = message.split(' ').filter(word => hashtags.includes(word));
bxpogfeg4#
由于您已经使用下划线:
4szc88ey5#
使用下划线的另一种变体:
但是,这正是
_.intersection
所做的,所以在我看来,the answer by BBS是最正确的。