Javascript中的动态切换
我想在javascript中对动态内容进行切换,我将举一个例子:Javascript中的动态切换,javascript,switch-statement,Javascript,Switch Statement,我想在javascript中对动态内容进行切换,我将举一个例子: switch(terrain) { case "Plains": terrain = Plains.create(newPosition); break; case "Mountains": terrain = ImpassableMountain.create(newPosition); break;
switch(terrain) {
case "Plains":
terrain = Plains.create(newPosition);
break;
case "Mountains":
terrain = ImpassableMountain.create(newPosition);
break;
case "Hills":
terrain = Hills.create(newPosition);
break;
case "Forest":
terrain = Forest.create(newPosition);
break;
case "River":
terrain = River.create(newPosition);
break;
default:
};
所以,如果我想添加一个新的地形,例如海洋,我希望它会自动更新。我正在考虑将所有地形排列成一个阵列
var terrainArray = ["Plains","Mountains","Hills","Forest","River","Ocean",...]
但我不知道如何以最优化的方式将其放入开关中,因为如果我尝试
for(var i=0;i<terrainArray.length;i++){
if(terrain==terrainArray[i]){
Terrain.create(newPosition);
}
}
for(var i=0;i您可以简单地使用.indexOf
检查它是否在该数组中,并相应地执行操作
terrainArray.indexOf(terrain) >=0 ? Terrain.create(newPosition) : null;
到
它将遍历整个数组。要在数组中找到某个对象,它将始终使用对象文字-这使它变得更容易和更快,因为您不必每次查找某个对象时都循环数组。它也比开关更容易动态处理
const foo = {
Plains: Plains,
Mountains: ImpassableMountains
}
let x = 'Plains';
foo[x].create(newPosition)
开关
通常也适用于所有情况。我不认为这段代码处于瓶颈位置,因为它会影响性能