Javascript 如何从JSON对象中删除对象?
我试图从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 :
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]来访问对象堆栈的属性键