如何从任何深度的嵌套 javascript 对象中删除属性?

新手上路,请多包涵

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

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

我想从所有对象的任何深度删除选项属性。对象可以嵌套在对象中,数组也是如此。

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

原文由 orszaczky 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 370
1 个回答

没有直接的方法来实现这一点,但是您可以使用下面的函数从 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 obj[key];
        }
    }
    return obj;
}

并像使用它

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

原文由 void 发布,翻译遵循 CC BY-SA 4.0 许可协议

推荐问题