利用对象去解决大量if(){}else{}赋值问题

268 阅读1分钟

1.当不想用大量的if(){}else{}去给一个变量赋值的时候

例如:

    if(value==='13'){
        return '小石'
    }else if(value==='18'){
        return '小明'
    }else if(value==='20'){
        return '小红'
    }else if(value==='17'){
        return '小王'
    }else if(value==='21'){
        return '小马'
    }else if(value==='30'){
        return '小张'
    }else{
        return value
    }

一种解法:把值转换为对象,利用对象的属性方法结合switch进行赋值

    let obj = {
        '小石': '13',
        '小明': '18',
        '小红': '20',
        '小王': '17',
        '小马': '21',
        '小张': '30'
    }
    function getValue(obj, params) {//输入年纪
        let str = '';
        for (const [key, value] of Object.entries(obj)) {
            switch (params) {
                case value:
                    str = key
                    break;
                default:
                    str = params
            }
            return str;
        }
    }
    console.log(getValue(obj, '13')) //小石

2.当有两个值匹配时,用逗号分隔

     let obj = {
      '小石': '13',
      '小明': '18',
      '小红': '20',
      '小王': '17',
      '小马': '21',
      '小张': '13'
  }
  function getValue(obj, params) {//输入年纪
      let str = '';
      let arr = []
      for (const [key, value] of Object.entries(obj)) {
          if(params===value){
              arr.push(key)
          }
      }
      str = arr.length>0?arr.join(','):params
      return str
  }
  console.log(getValue(obj, '13'))//小石,小张