JS/Javascript: .match returns 一个未定义的值
JS/Javascript: .match returns an undefined value
我试图从数组中检索每个匹配的词,但 .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' ]
您使用 match() 不正确。此函数接受一个正则表达式作为参数,您将它与数组一起使用。
您可以通过检查 value
是否是数组的元素之一来实现您想要的。
这是一个例子:
var hashtags = [ '#hr', '#acc', '#sales' ];
var message = "hello there #hr #acc";
var filteredMessage = _.filter( message.split( ' ' ), value => hashtags.indexOf(value) != -1 );
console.log(filteredMessage);
<script src="https://cdnjs.cloudflare.com/ajax/libs/underscore.js/1.8.3/underscore.js"></script>
您尝试执行的操作存在问题,主题标签是一个数组,并且 match 采用正则表达式,因此我认为这不是您想要使用的方法。
另一种解决方案是使用lodash提供的交集函数
_.intersection(hashtags, message.split(' '))
如果您确实想使用正则表达式(和匹配),我认为您可能必须遍历两个数组以获得交集。
因为你已经在使用下划线了....
filteredMessage = _.filter( message.split( ' ' ), value => _.find(hashtags, tag => tag === value))
以下适合我
var filteredMessage = message.split(' ').filter(word => hashtags.includes(word));
我试图从数组中检索每个匹配的词,但 .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' ]
您使用 match() 不正确。此函数接受一个正则表达式作为参数,您将它与数组一起使用。
您可以通过检查 value
是否是数组的元素之一来实现您想要的。
这是一个例子:
var hashtags = [ '#hr', '#acc', '#sales' ];
var message = "hello there #hr #acc";
var filteredMessage = _.filter( message.split( ' ' ), value => hashtags.indexOf(value) != -1 );
console.log(filteredMessage);
<script src="https://cdnjs.cloudflare.com/ajax/libs/underscore.js/1.8.3/underscore.js"></script>
您尝试执行的操作存在问题,主题标签是一个数组,并且 match 采用正则表达式,因此我认为这不是您想要使用的方法。
另一种解决方案是使用lodash提供的交集函数
_.intersection(hashtags, message.split(' '))
如果您确实想使用正则表达式(和匹配),我认为您可能必须遍历两个数组以获得交集。
因为你已经在使用下划线了....
filteredMessage = _.filter( message.split( ' ' ), value => _.find(hashtags, tag => tag === value))
以下适合我
var filteredMessage = message.split(' ').filter(word => hashtags.includes(word));