javascript - 试图为特定场景建立一个随机变量,但结果似乎忽略了“if”语句
问题描述
我正在尝试为特定地图获取随机气候条件,但我不希望某些地图出现某些气候条件(例如,如果该地区是热带地区,我不想要冰雪)。这是我设置的条件的示例:
let climate;
if (mapNumber === "One" || "Three" || "Four") {
climate = ["dry", "light rain", "medium rain", "heavy rain", "light snow", "medium snow", "heavy snow", "light ice", "very icy", "severe ice"];
climateCondition = Math.floor(Math.random() * climate.length);
keyClim = climate[climateCondition];
} else if (mapNumber === "Two" || "Five") {
climate = ["dry", "light rain", "medium rain", "heavy rain"];
climateCondition = Math.floor(Math.random() * climate.length);
keyClim = climate[climateCondition];
} else climate = false;
console.log("Climate conditions", climateCondition, climate[climateCondition]);
当我第一次调用它时,我只是为每个地图设置了单独的条件,但是代码太长了,我试图重构为少量代码(大约小 5 倍)。
所以我想要发生的事情是,我有一个全局变量“一”、“二”、“三”、“四”或“五”(目前,但如果需要,希望能够添加更多)。所以,在这种情况下,地图“一”、“三”和“四”可以形成冰雪(虽然我实际上更喜欢地图“四”只有小雪和小冰,但我可以在排序时解决这个问题到目前为止)。然后该变量可以稍后用作“气候”+ mapNumber。
我已经尝试了多种方法来让它发挥作用,目前我只是碰壁了。您的帮助将不胜感激。谢谢 :)
解决方案
您不能执行以下操作:
(mapNumber === "One" || "Three" || "Four")
因为这意味着:mapNumber === "One"
or if"One"
没有定义(这显然不是这里的情况,因为"One"
它是一个字符串,所以它被定义了)mapNumber === "Three"
和 if"Three"
没有定义(出于同样的原因,情况并非如此)mapNumber === "Four"
。所以它只测试第一个条件:mapNumber === "One"
.
你所要做的:
(mapNumber === "One" || mapNumber === "Three" || mapNumber === "Four")
或者
["One", "Three", "Four"].includes(mapNumber)
推荐阅读
- r - ggplot2显示离散变量的多个点
- html - 烧瓶:模板未更新
- java - Apache CXF 作为 Ant 项目中的 Jar?
- r - 在 R 中使用 pmap 函数
- python - 仅在使用诗歌时出现 Keras 错误
- youtube-data-api - Power BI YouTube 集成
- javascript - ejs中的下拉框,访问ejs文件中javascript之外的javascript变量
- passwords - 损坏的 sudoers 文件和 root 密码
- android - 至少 30.8.2 版本的包“Android 模拟器”不可用
- javascript - 为什么这个 JavaScript 在我的 SSR 报告中不起作用