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