前端js处理对象数据异常,让程序更健壮

2019-08-06  本文已影响0人  Eason_0cce

Q:用途是啥?
A:告别后端数据返回无休止的判断对象值

/*
uncheck为false返回[code, result] code为1才会有正确的result
uncheck为true返回result或者false
*/
function getObjVal(origin,args,uncheck){
  var result = {};
  var warning = { code : 1 };
  if(!origin){
    result = [0, false];
    warning = {
      'code' : 0,
      'data' : { 
        'origin' : origin,
        'args' : args
      }
    };
  }else{
    if(!args || !args.length){
      result = [-2, false];
      warning = {
        'code' : -2,
        'data' : "缺少keys"
      };
    }else{
      var key;
      for(var i = 0; i < args.length; i++){
        key = args[i];
        if(origin[key]){
          origin = origin[key];
        }else{
          result = [-1, false];
          warning = {
            'code' : -1,
            'data' : {
              'origin' : origin,
              'args' : args,
              'breakKey' : key
            }
          };
          break;
        }
      }
    }
  }
  if(uncheck){
    if(warning.code != 1){
      return false;
    }else{
      return origin;
    }
  }else{
    if(warning.code == 0){
      console.warn(warning);
    }else if(warning.code == -1){
      console.warn(warning);
    }else if(warning.code == -2){
      console.warn(warning);
    }else{ //
      result = [1,origin];

    }
    return result;
  }
}

基本用法:
1.let [code, result] = getObjVal({test :{ a : { b:1 }} },['test','a','b']);
2.let result2 = getObjVal({test :{ a : { b:1 }} },['test','a','b2'],true);

上一篇 下一篇

猜你喜欢

热点阅读