Я крутил свои колеса на этом некоторое время. У меня есть массив объектов, построенный следующим образом:
0: {name: "Coaches", isActive: true, locations: Array(13)}
1: {name: "Directors", isActive: false, locations: Array(13)}
2: {name: "Trainers", isActive: false, locations: Array(5)}
У меня есть навигационное меню, и когда мышь входит, я получаю текст строки. Теперь я пытаюсь в своем массиве сравнить этот текст с текстом имени, чтобы я мог создавать подэлементы местоположений.
$('.nav ul').hide();
$('.nav li').mouseenter(function () {
$(this).children('ul').stop().slideDown('slow');
var text = $(this).find('span').text();
//console.log(text);
var item = leftNavData.modules.findIndex(i => i.name.toLowerCase() === "coaches");
var i = leftNavData.modules.find(x => x.name.toLowerCase() == text.toLowerCase());
console.log(i);
console.log(item);
}).mouseleave(function () {
$(this).children('ul').stop().slideUp('slow')
});
Поиск всегда возвращает тот же объект, который тренирует первый, даже если я наведу курсор на другие элементы.
Текст меняется, но поиск всегда возвращает первый объект.
FindIndex всегда равен 0.
Любые идеи или что-то, что я пропустил?
Спасибо
.toLowerCase()
— это метод, а не свойство. - person Mitya   schedule 30.01.2019toLowerCase
. В нем отсутствуют скобки:toLowerCase()
. - person trincot   schedule 30.01.2019"coaches"
и"Coaches"
не являются одной и той же строкой. - person trincot   schedule 30.01.2019toLowerCase
... - person trincot   schedule 30.01.2019