es6Map数据类型的应用替代if else

1,701 阅读1分钟

替换if else 可以采用策略模式,下面是用es6 Map数据类型实现策略模式替代if else 的方法

   function func(name, no){
     const map = new Map()      const type1 = {
        name: 'Mike',
        no: 13098
      }
      const type2 = {
        name: 'Tina',
        no: 12090
      }
      const type3 = {
        name: 'Jack',
        no: 11090
      }
      map.set(type1, function() {
        console.log("if Mike do something")
      })
      map.set(type2, function() {
        console.log("if Tina do something")
      })
      map.set(type3, function() {
        console.log("if Jack do something")
      })
      let handle = function() {}
      const getVal = (param = {}) => {
        for (const value of map.entries()) {
          if ((value[0].name=== param.name) && (value[0].no === param.no)) {
            handle = value[1]
          }
        }
      }
      const params = {
        name: name,
        no: no
      }
      getVal(params)
      handle.call(this)
   }