JS / Javascript:.match返回一个未定义的值

时间:2017-10-22 06:40:28

标签: javascript underscore.js

我正在尝试从数组中检索每个匹配的单词,但$(document).ready(function () { function imageDefer() { $('img').each(function() { $(this).attr('src', $(this).attr('data-defer')); }); imageDefer(); }); 返回未定义的函数。我很确定我不需要转换任何内容,因为我正在比较两个字符串:

.match

4 个答案:

答案 0 :(得分:2)

您错误地使用了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>

答案 1 :(得分:1)

你要做的事情的问题是hashtags是一个数组,匹配采用正则表达式,所以我不认为这是你想要使用的方法。

另一种解决方案是使用lodash提供的交叉功能

_.intersection(hashtags, message.split(' '))

如果你确实想使用正则表达式(和匹配),我想你可能需要遍历两个数组才能获得交集。

答案 2 :(得分:1)

因为你已经使用了下划线....

filteredMessage = _.filter( message.split( ' ' ), value => _.find(hashtags, tag => tag === value))

答案 3 :(得分:1)

以下适用于我

var filteredMessage = message.split(' ').filter(word => hashtags.includes(word));