美文网首页
实际运用(条件判断)

实际运用(条件判断)

作者: LoveBugs_King | 来源:发表于2019-05-15 22:30 被阅读0次

    总结:
    本文分享了了8种逻辑判断写法,包括if/else、switch
    一元判断时:存到Object里
    一元判断时:存到Map里
    多元判断时:将condition拼接成字符串存到Object里
    多元判断时:将condition拼接成字符串存到Map里
    多元判断时:将condition存为Object存到Map里
    多元判断时:将condition写作正则存到Map里

    愿你未来的代码里,不只是有if/else/switch。

    问题
        复杂逻辑判断,我们常用if/else/switch来实现,但随着逻辑复杂度的增加,代码中的if/else/switch会变得越来越臃肿,越来越看不懂。

    先看一段代码:

    if/else

    解决:

    大家可以很轻易的提出这段代码的改写方案,switch出场:

    switch

            这样看起来比if/else清晰多了,细心的同学也发现了小技巧,case 2和case 3逻辑一样的时候,可以省去执行语句和break,则case 2的情况自动执行case 3的逻辑。

    还有更简单的写法,将判断条件作为对象的属性名,处理逻辑的函数名作为对象的属性值:

    通过对象管理、映射判断条件和判断逻辑

    我们也可以用ES6的Map对象来实现,它和Object对象的区别是:
        一个对象通常都有自己的原型,所以一个对象总有一个"prototype"键。
        一个对象的键只能是字符串或者Symbols,但一个Map的键可以是任意值
        你可以通过size属性很容易地得到一个Map的键值对个数,而对象的键值对个数只能手动确认。

    通过ES6的Map对象来实现

    我们把问题升级一下,以前按钮点击时候只需要判断status,现在还需要判断用户的身份:
        如果用if/else来完成逻辑判断

    if/else判断量很大,代码量也会加倍

    我们继续用Map来写呢

    把状态和角色用1个字符串管理起来作为Map的key,然后去匹配调用,这种写法在多元判断时候很好用

    如果用Object来实现也是类似的:

    Object来实现

    如果觉得查询条件是字符串有点别扭,还有一种方案就是用Object对象作为key

    不用字符串匹配,而用filter来查找匹配

    再将难度升级一点点,假如guest情况下,status1-4的处理逻辑都一样怎么办,最差的情况是这样:

    1-4都执行functionA

    好一点的写法是将处理逻辑函数进行缓存:

    把方法进行缓存

    但是写4次functionA实在不爽啊,我们可以用字符串为key,然后正则来匹配key。

    这里的其实使用二元数组更合适,因为并没有用到Map的api

    相关文章

      网友评论

          本文标题:实际运用(条件判断)

          本文链接:https://www.haomeiwen.com/subject/bqkklqtx.html