热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

替代数百/数千个if语句

如何解决《替代数百/数千个if语句》经验,为你挑选了2个好方法。

我正在用html5和Javascript编写货币转换应用程序,并对转换率进行硬编码.问题是我希望能够在33种货币之间进行转换.这会产生一个问题,因为我能想到的唯一方法是使用if语句,这意味着我必须编写1056 if语句.即

if (homeCountry = "uk" and destinatiOnCountry= "france") {
    rate = 1.32;
}
if (homeCountry = "uk" and destinatiOnCountry= "japan") {
   rate = 183.79;
}

对于所有英国转换然后

if (homeCountry = "japan" and destinatiOnCountry= "france") {
   rate = 0.0074;
}
if (homeCountry = "japan" and destinatiOnCountry= "china") {
    rate = 0.053;
}

适用于所有日本融合等

即使使用switch语句,这仍然需要输入大量代码.我想知道是否有人能想到解决这个问题的方法,使其稍微减少乏味.我一直试图想出一段时间的解决方案而且我被卡住了.有人可以帮忙吗?谢谢



1> Quince..:

为什么不创建一种类似的哈希映射

  conversions: {
    uk: {
      france: 1.12,
      japan: 2.12
    },
    france: {
      uk: 1.22,
      japan: 2.3
    },
    japan: {
      france: 2.2,
      uk: 3.4
    }
  }

然后你可以通过去访问conversions[homeCountry][destinationCountry].


打字速度不应该让你担心.它不是一个打字比赛,它是一个帮助论坛

2> Orif Khodjae..:

创建一个包含usd费率的对象

var rates = {
  usd: 1,
  eur: 0.77,
  gbp: 0.63
}

然后创建一个这样的函数:

function convertRate(src, dest, val){
  if(src=='usd'){
    return val*rates[dest];
  }
  else{
    return val * 1/rates[src] * rates[dest];
  }
}

我们来试试吧!

convertRate('usd','eur',130);
convertRate('eur','gbp',130);

没有功能的同样做,只有一个2d阵列有一些更好的性能,内存消耗不是问题,但像这样填充2d数组是乏味的.以我建议的方式执行此操作更容易,我认为您不会注意到任何性能差异.


推荐阅读
author-avatar
郭建将_683
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有