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

来源:互联网 发布:ps软件多大内存 编辑:程序博客网 时间:2024/03/29 08:41

直接进入主题:过滤对象中的,”“、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;};
0 0
原创粉丝点击