如何从任何深度的嵌套javascript对象中删除属性? [英] How to remove a property from nested javascript objects any level deep?

查看:98
本文介绍了如何从任何深度的嵌套javascript对象中删除属性?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

假设我有嵌套对象,例如:

Let's say I have nested objects, like:

var obj = {
    "items":[
        {
            "name":"Item 1", 
            "value": "500",
            "options": [{...},{...}]
        },
        {
            "name":"Item 2", 
            "value": "300",
            "options": [{...},{...}]
        }
    ],
    "name": "Category",
    "options": [{...},{...}]
};

我想从所有对象的任何深度删除选项属性.对象可以嵌套在对象内,也可以嵌套在数组内.

I want to remove the options property from any level deep from all the objects. Objects can be nested within objects, and arrays as well.

我们目前在该项目中使用Lodash,但我对任何解决方案都感到好奇.

We're currently using Lodash in the project, but I'm curious about any solutions.

推荐答案

目前尚无直接的方法,但是您可以使用以下功能从JSON中删除密钥.

There is no straight forward way to achieve this, however you can use this below function to remove a key from JSON.

function filterObject(obj, key) {
    for (var i in obj) {
        if (!obj.hasOwnProperty(i)) continue;
        if (typeof obj[i] == 'object') {
            filterObject(obj[i], key);
        } else if (i == key) {
            delete key;
        }
    }
    return obj;
}

并像使用它

var newObject = filterObject(old_json, "option");

这篇关于如何从任何深度的嵌套javascript对象中删除属性?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆