JS:判断对象为空及清除对象为空属性

1、判断对象为空对象(也就是{})

(1)使用Object.keys

  (2) 使用 JSON.stringify

  (3)使用for..in

image

2、清除对象为空属性

(1)会改变原对象(直接修改原对象)的方法

image

(2)不改变原对象的方法(也就是返回一个新对象)

image

原代码如下:

function filterParams(obj) { // 剔除对象的空属性
    var _newObj = {};
    for (var key in obj) {
        if (obj.hasOwnProperty(key)) { // 判断对象中是否有这个属性
            if (isEmpty(obj[key])) continue;
            _newObj[key] = typeof obj[key] === 'object' ? (
                obj[key] instanceof Array ? ArrayFilterParams(obj[key]) : filterParams(obj[key])
            ): obj[key];
            
        }
    }
    return _newObj;
}
function ArrayFilterParams(arr) { // 剔除数组中的空值
    var err = [];
    const empty_arr = ['', undefined, null];
    arr.forEach((item, index) => {
        if (isEmpty(item)) return;
        err.push(
            typeof item === 'object' ? (
                item instanceof Array ? ArrayFilterParams(item) :  filterParams(item)
            ) : item
        );
    })
    return err;
}
function isEmpty(obj) { // 为空情况
    const empty_arr = ['', undefined, null];
    return (empty_arr.indexOf(obj) > -1 || obj.toString().trim() === '');
}
let info = {
    name: '111',
    age: null,
    sex: undefined,
    aa: '',
    infoo: [
        1, 23,5434,null,22, {
            nale: '',
            ss: '111'
        }
    ],
    cc: {
        asas: [
            1,2,23,333
        ],
        name: '',
        asss: undefined,
        aaa:null
    }
}
console.log(filterParams(info));
posted @ 2019-12-29 00:01  浅笑浅语  阅读(5703)  评论(0编辑  收藏  举报