javascript - Alert() 在 else 语句中无法正常工作
问题描述
当我在我的用户输入中输入与流派 obj 不匹配的随机字符串时,会出现警报。但是,当我输入与警报(无效类型)匹配的有效输入时,仍然会弹出。并且不通过 if 语句。
示例:用户输入:作为有效输入的恐怖应该返回所有电影列表,但仍然会出现警报,说它不是有效的类型。
else 语句出现 if 语句是否等于genre[i].name
$('#submitButton').click(function(){
reset();
// getting genre from user
let genreSubmission = $('#inputSearch').val().toLowerCase();
let genreId = 0;
// api genre ids objects to change the api link
const genre = [
{
"id": 28,
"name": "Action"
},
{
"id": 12,
"name": "Adventure"
},
{
"id": 16,
"name": "Animation"
},
{
"id": 35,
"name": "Comedy"
},
{
"id": 80,
"name": "Crime"
},
{
"id": 99,
"name": "Documentary"
},
{
"id": 18,
"name": "Drama"
},
{
"id": 10751,
"name": "Family"
},
{
"id": 14,
"name": "Fantasy"
},
{
"id": 36,
"name": "History"
},
{
"id": 27,
"name": "Horror"
},
{
"id": 10402,
"name": "Music"
},
{
"id": 9648,
"name": "Mystery"
},
{
"id": 10749,
"name": "Romance"
},
{
"id": 878,
"name": "Science Fiction"
},
{
"id": 10770,
"name": "TV Movie"
},
{
"id": 53,
"name": "Thriller"
},
{
"id": 10752,
"name": "War"
},
{
"id": 37,
"name": "Western"
}];
for (let index = 0; index < genre.length; index++) {
if(genreSubmission === genre[index].name.toLowerCase()){
genreId = genre[index].id;
console.log(genreId);
} else{
return alert("not a valid genre");
}
};
解决方案
假设您输入Adventure。
- 你进入循环并且
index
是0
genre[0].name
是不是冒险的动作- 所以你
return alert("not a valid genre");
哪个- 警报
- 退出函数(因为那是什么
return
)
由于您退出了循环,index
因此永远不会递增到1
并且您永远找不到匹配项。
您需要在放弃和警报并返回之前搜索整个数组而不找到匹配项。
虽然您可以使用for
循环来执行此操作,但数组具有执行此操作的内置方法:
const match = genre.find(
element => element.name.toLowerCase() === genreSubmission
);
if (match) {
console.log(match.id);
} else {
return alert("not a valid genre");
}
推荐阅读
- c# - 如何实现全局 WinAPI 覆盖接口
- html - 使用 Doxygen 内联显示图像
- visual-studio-code - 当窗格中的最后一个文件关闭时,防止 Visual Studio Code 更改窗口布局?
- php - php,如何作为类连接数据库,发送sql语句并返回结果
- node.js - 如何用 Sequelize 建立两个不直接相互依赖的表之间的关系?
- react-native - 如何在尴尬的 createStackNavigator 屏幕上居中标题文本?
- java - 为什么我的arraylist 只填充了一个元素?
- javascript - 使用 map 和 reduce 转换数组
- excel - 如果某个值在一列的每 10 个单元格中出现少于 3 次,则将这些值替换为另一个值
- python - Python pandas:如何在符号更改时选择行并具有最小值?