gpt4 book ai didi

javascript - 更改所有子对象的位置后删除 JSON 父对象

转载 作者:行者123 更新时间:2023-11-29 18:46:40 25 4
gpt4 key购买 nike

我正在尝试制作一个通用的 JSON 函数,该函数被发送一个源、目的地,以及是否应该在完成后删除空父对象。问题是我不确定如何删除父对象,一旦它为空并通过循环完成。

我的代码成功地获取了子项并移动了它们,并从当前父项中删除了子项。我面临的问题是在完成后尝试删除父项本身。

let j = {
'test': 'test',
'remove': { 'string1' : 'hello', 'string2' : 'world' }
}

moveAll(j.remove,j,true);

function moveAll(src, dst, del) {
del = del || false;
for ( let item in src ) {
dst[item] = src[item];
if(del) {
delete src[item];
}
}
}

通过上面的代码,我试图获取删除的内容并将它们放置在主要对象位置。

所以如果它按预期工作,它就会像这样。

let j = {
'test': 'test',
'string1' : 'hello',
'string2' : 'world'
}

这就是我目前得到的。我尝试使用delete src,但src 只包含remove 的内容而不是remove 本身。所以我想知道是否有办法访问父级。

let j = {
'test': 'test',
'remove': { },
'string1' : 'hello',
'string2' : 'world'
}

这只是我想做的事情的一个基本想法,所以我知道还有很多工作要做。但我尝试查找此问题,但找不到解决方案。

提前致谢!

最佳答案

您不能从您的moveAll 函数(如所写)中删除父级,因为它没有对j 对象的任何引用。 (你传入 j.remove,但它本身没有 j。)

这会起作用:

moveAll(j, 'remove', j, true);

function moveAll(obj, key, dst, del) {
src = obj[key]
del = del || false;
for ( let item in src ) {
dst[item] = src[item];
if(del) {
delete src[item];
}
}

if (del)
delete obj[key]
}

现在您的函数可以访问父对象,并且可以轻松地在最后执行 delete obj[key]

关于javascript - 更改所有子对象的位置后删除 JSON 父对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53306705/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com