Javascript 如何从JSON对象中删除对象?

Javascript 如何从JSON对象中删除对象?,javascript,json,Javascript,Json,我试图从JSON对象中删除一个对象。有没有简单的方法?如果我有一个对象,我可以从中删除该项,还是将该对象转换为数组并拼接它更好?每种方法的优缺点是什么 我想写的逻辑是这样的 function remove( delKey, delVal, o, stack){ for(var key in o) { if(typeof o[key] === "object") { stack != undefined ? stack += "." + key :

我试图从JSON对象中删除一个对象。有没有简单的方法?如果我有一个对象,我可以从中删除该项,还是将该对象转换为数组并拼接它更好?每种方法的优缺点是什么

我想写的逻辑是这样的

function remove( delKey, delVal, o, stack){
    for(var key in o) {
        if(typeof o[key] === "object") {
            stack != undefined ? stack += "." + key : stack = key;
            remove(delKey, delVal, o[key], stack);
        } else {
            if(delKey == key && delVal == o[key]) {     
                delete o;
            }
        }
    }
}
将代码更改为使用删除而不是拼接

这就是我想做的,如果有更简单的方法,请告诉我。我这里的问题是A。我不知道在哪里拼接。B.如果我进行拼接,我想我不会通过递归将拼接结果返回给其他对象

我的问题是,每次我不知道嵌套属性时,我都会使用不同的JSON。这就是我使用stack变量的原因。堆栈将包含嵌套的属性。因此,如果我想删除苹果的颜色,堆栈将是json.fruit.apple.color。但它是一个字符串而不是一个对象


不管怎样,有没有人有更好的从JSON中删除对象的解决方案

您可以使用
delete
操作符:

希望这有助于其他人摆脱这一困境。谢谢你们的帮助

这是我的答案和我所拥有的对我有用的功能。它足够抽象,希望能帮助其他人

如果将任何要删除的键值对和已解析的JSON对象传递给此函数,它将删除该键值对,如果找到并删除该项,则返回true

    function remove(delKey, delVal, o) {
        for (var key in o) {
            if (typeof o[key] === "object") {
                if (remove(delKey, delVal, o[key])) { return true; }
            } else {
                if (delKey == key && delVal == o[key]) {
                    delete o[key];
                    return true;
                }
            }
        }
    }

您正在寻找
delete
操作符。当然,好的,我也试过了。但如果我只是试图删除o;它不起作用。您还需要学习如何使用
delete
操作符。请参阅MDN的文档。请不要将您的答案放在问题中。你可以发布自己问题的答案并接受。好的,我理解。但我不确定要删除什么。在本例中,See stack是对象所在位置的字符串,但不是实际对象。如果我只是用删除o替换拼接;它不会从JSON中删除它。我的问题是我不能删除那个确切的项目。我不确定我是否得到了所有东西。但这可能会对您有所帮助:如果您将一个键的值存储在一个变量中,那么您可以执行以下操作:stack[key]来访问对象堆栈的属性键