java条件分⽀过多的处理_多条件判断下的代码优化解决⽅案对于if-else想必⼤家都不会陌⽣,通常⽤于多条件判断,当判断条件过多时,⼤家可能会想到⽤switch-case(条件分⽀语句)来优化;
温馨提⽰:多条件判断的时候要遵循⽩名单规则
尽管⽤到了条件分⽀语句优化了代码,但依然是有继续优化的空间的,⽆论是在代码执⾏效率上还是在后期项⽬管理上。
⼀、ES6的Map和原⽣object对象的异同点
ES6中引⼊了Map数据结构,对于Map,写过java的应该不陌⽣→java数据结构之集合;
object和Map存储的都是键值对组合。但是:
object的键的类型是字符串;
map的键的类型是可以是任意类型;
另外,object获取键值使⽤Object.keys(返回数组);
Map获取键值使⽤ map变量.keys() (返回迭代器)。
var map = newMap();
map.set(1,()=>{console.log(111)});
map.set('1',()=>{console.log('111')});var obj ={};
obj[2] = ()=>{console.log(222)};
obj['2'] = ()=>{console.log('222')};
console.log(map,obj);
控制台打印:
⼆、传统if-else实现多条件判断
functiontest(num) {if(num == 1){
console.log(num+ 1);
}else if (num == 2){
console.log(num- 2);switch case判断字符串
}else if (num == 3){
console.log(num* 3);
}else if (num == 4){
console.log(num/ 4);
}
}
test(3);
如果要继续添加条件怎么办,只能继续在原函数上添加条件else if(switch-case同理),不仅看上去不美观,条件越多,代码拖得越长,⽽且后期也不易维护。
三、Map实现多条件判断
var map2 = newMap();
map2.set(1,(num)=>{console.log(num + 1);});
map2.set(2,(num)=>{console.log(num - 2);});
map2.set(3,(num)=>{console.log(num * 3);});
map2.set(4,(num)=>{console.log(num / 4);});functiontest2(num){
<(num)(num);
}
test2(4);
对于这个map2,我们还可以在上述基础上,利⽤模块化将其独⽴出来,作为⼀个配置⽂件单独维护。
下⾯是es6的语法,我倒腾半天,最后发现应该是chrome(66)不⽀持,于是直接写在之前的vue项⽬⾥,因为该项⽬有babel依赖,所以es6的语法会给你转成es5的。
map2.js
let map2 = newMap();
map2.set(1,(num)=>{console.log(num + 1);});
map2.set(2,(num)=>{console.log(num - 2);});
map2.set(3,(num)=>{console.log(num * 3);});
map2.set(4,(num)=>{console.log(num / 4);});
export { map2 }
demo.vue
...
mounted () {st2(2);//控制台打印0
},
methods : {
test2(num){
<(num)(num);
}
}
}
这样⼀来要想继续添加/删除条件的话,只需要维护map2.js这个⽂件就可以了。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论