我希望有人可以向我解释这一点,在不受欢迎的docs中,它说:
如果列表中存在该值,则返回true。如果list是一个数组,则在内部使用indexOf。
我想通过检查路径是否包含member
来查看用户是否在成员页面上。目前路径可以是'/ members /'或'/ member / someid`。
所以我现在所拥有的是
_.contains(['/member'],path);
在两种情况下都返回false,但是如果我检查indexOf
path.indexOf('/member');
在两种情况下都返回0。
为什么_.contains的行为与indexOf不同,我该如何解决?
更新:
我打算测试的页面多于member
,这就是为什么我在contains()
中使用数组
答案 0 :(得分:0)
contains
在列表中搜索元素。如果列表为['a','b','c']
并且您搜索了一个元素'a'
,那么您将成功,如果您有一个列表['abc','bcd','def']
并且您搜索了一个元素{{1你会失败,因为那不在列表中。我们可以简单地编写代码来证明这一点:
'a'
在您的示例中,var list = [....];
var find = ...;
list.forEach(function(element) {
console.log("Is "+find+" the same as ["+element+"]? ", element==find);
});
与'member'
相同吗?它显然不是,它们是不同的字符串,因此'/member'
会报告正确的事情:您的字符串不包含在您正在检查的列表中。