面对条件单一但冗长的if else

网上无意看到一篇文章觉得不错,但不能转载,便是关于标题描述的。通过map数据结构来替换if else,显得更加简洁明了。

对于Map数据结构来做个简单介绍:

定义:

Map对象是一组键/值对的集合,键值可以是任何值。


语法:

new Map([iterable])Iterable 是一个数组(2元数组)或者其他可迭代的且其元素是键值对的对象。每个键值对会被加到新的 WeakMap 里。null 会被当做 undefined。


属性:

Map.length 为0;Map.prototype.constructor 返回创建Map实例的原型函数。 Map函数是默认的。


方法:

[Map.prototype.delete(key)]

移除key的关联对象。执行后 Map.prototype.has(key)返回false。

[Map.prototype.get(key)]

返回key关联对象, 或者 undefined(没有key关联对象时)。

[Map.prototype.has(key)]

根据是否有key关联对象返回一个Boolean值。

[Map.prototype.set(key, value)]
在Map中设置一组key关联对象,返回这个Map对象。


实例:


var status = 8;

  // 常用的if else 进行 条件判断来do somethings

        if(status == 1){

            console.log(111111)

        }else if(status == 2){

            console.log(222222)

        }else if(status == 3){

            console.log(333333)

        }else{

            console.log(status)

        }                      // 8

        // switch case的写法 相比if else 是有一些优化了!

        switch (status){

            case 1:

            console.log(status)

            break

            case 2:

            console.log(status)

            break

            case 3:

            console.log(status)

            default:

            console.log(status)

            break;

        }                            // 8

        // 对象object 数据结构的写法  简洁了

        var obj = {

            "1":"11111",

            "2":"22222",

            "3":"33333"

        }

        console.log(obj[status] || status)  // 8

        // Map数据结构的写法    和object差不多

        var mMap = new Map([

            ["1","11111"],

            ["2","22222"],

            ["3","33333"]

        ])

        console.log(mMap.get(status) || status)  // 8

你可能感兴趣的:(面对条件单一但冗长的if else)