首页 > 解决方案 > 试图为特定场景建立一个随机变量,但结果似乎忽略了“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。

我已经尝试了多种方法来让它发挥作用,目前我只是碰壁了。您的帮助将不胜感激。谢谢 :)

标签: javascriptvariableskey

解决方案


您不能执行以下操作:

(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)

推荐阅读