2016-02-16 2 views
0

Я надеюсь, что кто-то может объяснить мне, в undescorejs docs, он говорит:Underscorejs Содержит не действует как IndexOf

Возвращает истину, если значение присутствует в списке. Использует indexOf внутри, если список - это массив.

Я хочу видеть, находится ли пользователь на странице участников, проверяя, содержит ли путь member. В настоящий момент путь может быть «/ members /» или «/ member/someid».

Так что у меня есть на данный момент

_.contains(['/member'],path); 

Который возвращает ложь в обоих случаях, но если я проверю IndexOf

path.indexOf('/member'); 

возвращает 0 в обоих случаях.

Почему _.contains, кажется, действует иначе, чем indexOf, и как я могу его исправить?

UPDATE: Я планирую испытать больше страниц, чем просто member, поэтому я использую массив в

+1

Если значение присутствует в ** списке **. 'path.indexOf()' - это метод ** string **, а '.contains()' - для нахождения значений в массиве. Существует 'indexOf()' в прототипе Array, который * аналогичен * для строки '.indexOf()', но другой. – Pointy

+0

Так что. .contains() 'не выполняет' indexOf() 'для каждого значения в массиве, а скорее для массива в целом? – Niel

+0

'path.startsWith ("/member ")' –

ответ

0

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'? Это очень ясно, это разные строки, и поэтому сообщит правильно: ваша строка не содержится в списке, который вы проверяете.

+0

Да, я понимаю, меня просто смутили документы, говорящие, что он использовал 'indexOf()'. – Niel

+0

такая же сделка хотя. 'indexOf' (для Arrays, not Strings) проверяет элементы в списке, поэтому ['abc']. indexOf ('a') будет false. –

Смежные вопросы