js处理对象参数值,过滤掉对象参数值为""、null、undefined,并返回一个新对象

直接进入主题:过滤对象中的,”“、null、 undefined,并返回新数组

比如以下参数值

var  pd = {
    a : "a",
    b : "b",
    c : "",
    d:undefined,
    e:null
}
对于pa对象参数中,不需要c,d,e的话,我们可能会这么写
function re(){
    var param = {}; 
    if (pd.a!=null && pd.a!=undefined && pd.a != "" ) param.a=pd.a;
    if (pd.b!=null && pd.b!=undefined && pd.b != "" ) param.b=pd.b;
    if (pd.c!=null && pd.c!=undefined && pd.c != "" ) param.a=pd.c;
    if (pd.d!=null && pd.d!=undefined && pd.d != "" ) param.d=pd.d;
    if (pd.e!=null && pd.e!=undefined && pd.e != "" ) param.a=pd.e;
    return param;
}

看着超级麻烦,如果这个pd对象中参数有很多比如一百个。。。。
之后有了一下的改进方法:

function dealElement(obj){
    var param = {};
    if ( obj === null || obj === undefined || obj === "" ) return param;
    for ( var key in obj ){
        if ( obj[key] !== null && obj[key] !== undefined && obj[key] !== "" ){
            param[key] = obj[key];
        }
    }
    return param;
}

dealElement()这个方法确实可以满足现有的需求,能够正确的返回值;后来又想到了以下的情况:

var  pd = {
    a : "a",
    b : "b",
    c : "",
    d:undefined,
    e:null,
    f:{
        f_a : "f_a",
        f_b:undefined,
        f_c:null,
        f_d:"",
        f_e:{
            f_e_a:"f_f_a",
            f_e_b:undefined,
            f_e_c:null,
            f_e_d:""
        }
    }
}

对象里面包又包含了一个对象列表,里面也需要过滤”“、null、 undefined,这时候上面的方法就不满足了;
所以将上面的方法改进了下
(已收录到方法库中:javascript常用方法整理;(不断更新)):
其中dataType()方法在方法库中;

/**
* 处理对象参数值,排除对象参数值为”“、null、undefined,并返回一个新对象
**/
function dealObjectValue(obj){
    var param = {};
    if ( obj === null || obj === undefined || obj === "" ) return param;
    for ( var key in obj ){
        if ( dataType(obj[key]) === "Object" ){
            param[key] = dealObjectValue(obj[key]);
        }else if(  obj[key] !== null && obj[key] !== undefined && obj[key] !== ""  ){
            param[key] = obj[key];
        }
    }
    return param;
};
  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值