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;
};
JavaScript中,过滤数组对象中的值并检查是否为空可以通过使用数组的`filter`方法实现,然后结合`find`方法来找到第一个符合条件的对象。这里以检查对象中的某个属性是否为空为例进行说明: 假设我们有一个对象数组,每个对象都有一个`name`属性,我们想要过滤那些`name`属性为空(即值为`null`、`undefined`或空字符串`""`)的对象,并且一旦找到第一个符合条件的对象就立即返回。 下面是一个简单的示例代码: ```javascript let objects = [ { id: 1, name: "Alice" }, { id: 2, name: null }, { id: 3, name: "" }, { id: 4, name: "Bob" } ]; // 过滤name属性为空的对象,并找到第一个符合条件的对象 let firstValidObject = objects.filter(obj => obj.name !== null && obj.name !== undefined && obj.name !== "")[0]; console.log(firstValidObject); // 输出第一个name不为空的对象 ``` 在上面的代码中,`filter`方法遍历了`objects`数组中的每个对象,并对每个对象执行了一个测试函数。这个测试函数检查了对象的`name`属性是否不等于`null`、`undefined`或空字符串。过滤后的数组是所有符合测试条件的对象组成的数组,然后通过`[0]`索引我们获取了第一个元素。 需要注意的是,如果数组中没有任何对象满足条件,那么`firstValidObject`将会是`undefined`。此外,如果数组很大或者对象数量很多,使用`filter`可能不是最高效的方法,因为它会遍历整个数组。在这种情况下,使用`find`方法可能会更合适。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值