js中关于判断取值的问题

小伙伴们在工做中会遇到这样的场景:
有一组变量的值是根据其余某个值来改变的,也就是一一对应,好比:编码

var cityCode = "城市区号",
    cityName = "城市名称",
    university = "最高学府",
    province = "所属省份";

城市区号是具备惟一性的,而另外三个值和城市区号是已具备关联性的。若是城市编号不肯定,但我们就得作判断,通常有if...else,switch...case,以下:code

if( cityCode == "0755") {
    cityName = "深圳";
    university = "深圳大学";
    province = "广东省";
} else if( cityCode == "010") {
    cityName = "北京";
    university = "北京大学";
    province = "北京市";
} else if( cityCode == "027") {
    cityName = "武汉";
    university = "武汉大学";
    province = "湖北省";
}

或者:ci

switch (cityCode) {
    case "0755" : 
    cityName = "深圳";
    university = "深圳大学";
    province = "广东省";
    break;
    case "010" : 
    cityName = "北京";
    university = "北京大学";
    province = "北京市";
    break;
    case "027" : 
    cityName = "武汉";
    university = "武汉大学";
    province = "湖北省";
    break;
}

还有一种方式:it

cityName = {"0755" : "深圳", "010" : "北京", "027" : "武汉"}[cityCode] || "没有定义";
university = {"0755" : "深圳大学", "010" : "北京大学", "027" : "武汉大学"}[cityCode] || "没有定义";
province = {"0755" : "广东省", "010" : "北京市", "027" : "湖北省"}[cityCode] || "没有定义";

相比上面两种,这种方式的可读性可能稍微差了那么一点点,但是简洁了许多。
但仍是重复了一些,根据城市编码取了三个变量的值,结果每取一次,就要要写一次城市编码,反而不那么简洁了。变量

最后一种方式:vi

var cityMode = {
    "0755" : {
        cityCode : "0755",
        cityName : "深圳",
        university : "深圳大学",
        province : "广东省"
    },
    "010" : {
        cityCode : "010",
        cityName : "北京",
        university : "北京大学",
        province : "北京市"
    },
    "027" : {
        cityCode : "027",
        cityName : "武汉",
        university : "武汉大学",
        province : "湖北省"
    }
};
cityName = cityMode[cityCode].cityNanme;
university = cityMode[cityCode].university;
province = cityMode[cityCode].province;

这种方式,应该也仍是不错的,可读性强,但貌似写的代码多了一点。co

以上,欢迎各位朋友指正,也但愿能看到更好更简洁的写法。cas

相关文章
相关标签/搜索