为了账号安全,请及时绑定邮箱和手机立即绑定

从 JSON 文档中删除未设置的元素

从 JSON 文档中删除未设置的元素

蝴蝶刀刀 2022-07-08 10:50:57
我必须删除未知深度的 JSON 文档的空白元素。像这个:{    "a": {        "a1": ""    },    "b": {        "b1": "",        "b2": {            "b21": "",            "b22": {                "b22z": "",                "b22x": ""            },            "b23": ""        },        "b3": ""    },    "c": "only non-empty field"}我认为最好的主意是使用 JSON.parse 来获取对象然后对其进行处理,所以我得到了这样的东西:我在这篇文章中找到了这个功能,但它没有像我预期的那样工作:function filter(obj) {    $.each(obj, function(key, value){        if (value === "" || value === null){            delete obj[key];        } else if (Object.prototype.toString.call(value) === '[object Object]') {            filter(value);        } else if ($.isArray(value)) {            $.each(value, function (k,v) { filter(v); });        }    });}用我的对象调用该函数后,我得到一个具有空属性的对象,我不想显示它:我怎样才能修改上面的代码来得到这个?我已经尝试了我所知道的一切,我要疯了......
查看完整描述

2 回答

?
慕的地8271018

TA贡献1796条经验 获得超4个赞

注释中的代码不起作用,因此我将在此处再次输入:


function removeEmptyEntries(object) {

    let allEmpty = true;


    for (let item in object) {


        if (typeof object[item] == "object") {

            if(removeEmptyEntries(object[item]))

            {

                delete object[item];

            } else {

                allEmpty = false;

            }


        } else if (object[item]=="") {

            delete object[item]

        } else {

            allEmpty = false;

        }

    }


    return allEmpty;

}

警告:这是从我的头顶上做的,所以它未经测试。


查看完整回答
反对 回复 2022-07-08
?
慕田峪7331174

TA贡献1828条经验 获得超13个赞

这是你想要的那种东西吗?


function remove(object) {

    for (let item in object) {

        if (typeof object[item] == "object") {

            remove(object[item])

        } else {

            if (object[item]=="") {

                delete object[item]

            }

        }

    }

    return object

}


const obj = {

    "a": {

        "a1": ""

    },

    "b": {

        "b1": "",

        "b2": {

            "b21": "",

            "b22": {

                "b22z": "",

                "b22x": ""

            },

            "b23": ""

        },

        "b3": ""

    },

    "c": "only non-empty field"

}


console.log(remove(obj))


查看完整回答
反对 回复 2022-07-08
  • 2 回答
  • 0 关注
  • 110 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信