#javascript #arrays #for-loop
#javascript #массивы #для цикла
Вопрос:
Я хочу перенаправить пользователя на новую страницу, если его данные для входа верны. Однако, когда я использую window.location.href("portal.html")
in простой оператор if, чтобы проверить, соответствуют ли данные пользователя уже сохраненным данным в переменной, это работает, но когда я использую его в цикле for для перебора массива сохраненных данных, он не отображает portal.html
страницу.
пожалуйста, помогите, спасибо.
for(let i = 0; i<= objPeople.length; i ){
if(name === objPeople[i].username amp;amp; pass === objPeople[i].password){
window.location.href="portal.html"
return
}
} console.log("incorrect login details");
Комментарии:
1. используйте break вместо return
2. Вы уверены, что имя пользователя и пароль совпадают?
3. Можете ли вы показать нам пример рабочего кода, а также то, что находится внутри вашего
objPeople
массива, а такжеname
иpass
?4. используйте i < objPeople . длина вместо i <= objPeople . длина будет нарушена, если данные не совпадут.
5. @AdnanAhmed Я использовал Break, и это сработало, спасибо.
Ответ №1:
Использовать find
вместо for
цикла:
if (objPeople.find(x => x.username === name amp;amp; x.password === pass))
window.location.href="portal.html"
else
console.log("incorrect login details")
Я протестировал ваш код и, как упоминал Аднан Ахмед, он не работает из-за return
инструкции. Так и должно быть break
.
Ответ №2:
Попробуйте сделать это так
let matches = false;
for(let i = 0; i<= objPeople.length; i ){
if(name === objPeople[i].username amp;amp; pass === objPeople[i].password){
matches = true;
}
}
if(matches){
window.location.href="portal.html"
}
Ответ №3:
Просто удалите return
. return
оператор предотвращает перенаправление на новую страницу. Я попробовал следующий пример, и он работает:
for (let i = 0; i < 20; i ) {
if (i === 10)
window.location.href = "https://google.com";
}