Underscorejs 包含不像 indexOf
Underscorejs Contains not acting like indexOf
我希望有人能给我解释一下,在 undescorejs docs 中,它说:
Returns true if the value is present in the list. Uses indexOf internally, if list is an Array.
我想通过检查路径是否包含 member
来查看用户是否在会员页面上。目前,路径可以是“/members/”或“/member/someid”。
所以我现在有的是
_.contains(['/member'],path);
在这两种情况下 returns 都是错误的,但是如果我检查 indexOf
path.indexOf('/member');
在这两种情况下都是 returns 0。
为什么 _.contains 的行为似乎与 indexOf 不同,我该如何解决?
更新:
我计划测试更多页面,而不仅仅是 member
,这就是我在 contains()
中使用数组的原因
contains
在列表中搜索元素。如果列表是 ['a','b','c']
并且您搜索一个元素 'a'
那么您将成功,如果您有一个列表 ['abc','bcd','def']
并且您搜索一个元素 'a'
你会失败,因为那不在列表中。我们可以简单地编写代码来证明这一点:
var list = [....];
var find = ...;
list.forEach(function(element) {
console.log("Is "+find+" the same as ["+element+"]? ", element==find);
});
在您的示例中,'member'
与 '/member'
相同吗?很明显不是,它们是不同的字符串,因此 contains()
会报告正确的事情:您的字符串不包含在您正在检查的列表中。
我希望有人能给我解释一下,在 undescorejs docs 中,它说:
Returns true if the value is present in the list. Uses indexOf internally, if list is an Array.
我想通过检查路径是否包含 member
来查看用户是否在会员页面上。目前,路径可以是“/members/”或“/member/someid”。
所以我现在有的是
_.contains(['/member'],path);
在这两种情况下 returns 都是错误的,但是如果我检查 indexOf
path.indexOf('/member');
在这两种情况下都是 returns 0。
为什么 _.contains 的行为似乎与 indexOf 不同,我该如何解决?
更新:
我计划测试更多页面,而不仅仅是 member
,这就是我在 contains()
contains
在列表中搜索元素。如果列表是 ['a','b','c']
并且您搜索一个元素 'a'
那么您将成功,如果您有一个列表 ['abc','bcd','def']
并且您搜索一个元素 'a'
你会失败,因为那不在列表中。我们可以简单地编写代码来证明这一点:
var list = [....];
var find = ...;
list.forEach(function(element) {
console.log("Is "+find+" the same as ["+element+"]? ", element==find);
});
在您的示例中,'member'
与 '/member'
相同吗?很明显不是,它们是不同的字符串,因此 contains()
会报告正确的事情:您的字符串不包含在您正在检查的列表中。