gpt4 book ai didi

javascript - 根据属性删除 JSON 对象

转载 作者:行者123 更新时间:2023-11-30 09:16:52 25 4
gpt4 key购买 nike

我正在使用 React,我有一个名为 newtreeData 的变量,它看起来像:

var newTreeData = {
name: submitted_title,
resource_link: submitted_resource_link,
details: submitted_details,
uuid: submitted_uuid,
website_image: submitted_website_img,
children: [
{
name: "Edit and save",
resource_link: "uh",
uuid: uuid.v4(),
details: "hi",
website_image:
"https://cdn3.iconfinder.com/data/icons/harmonicons-06/64/plus-circle-512.png",
children: [{...}, {}, ...]
},




{
name: "Edit and save",
resource_link: "uh",
uuid: uuid.v4(),
details: "hi",
website_image:
"https://cdn3.iconfinder.com/data/icons/harmonicons-06/64/plus-circle-512.png"
}
]
};

children: [{...}, {}] 行只是表示 newTreeData 的 child 可以有 child ,而 child 可以有 child ...

无论如何,我写了一个方法名findUUIDthenDelete,它应该用伪代码来完成:if(object.uuid == toFindUUID) then delete object,下面是完整的代码找到UUID然后删除:

  findUUIDthenDelete = (orig_data, to_delete_uuid) => {
var targetIsFound = false;
if (orig_data.uuid == to_delete_uuid) {
targetIsFound = true;
}

if (targetIsFound == false) {
if (orig_data.children === undefined) {
} else {
//if target not found, run recursion
orig_data.children.map(eachChildren =>
this.findUUIDthenDelete(eachChildren, to_delete_uuid)
);
}
} else {
console.log(orig_data, "this is the child ");
console.log(orig_data.parent, "is found, deleting its parent");
delete orig_data

}
};

如您所见,此方法分为两部分:首先,我找到具有我们试图查找的 uuid 的对象(可能需要一些递归),然后删除该对象。但是,现在由于执行 delete orig_data,我收到“在局部变量严格模式中删除等等”错误。对该错误的任何解决方法或解决此问题的一些全新方法有任何见解?如果有明显的解决方案,我也深表歉意,我现在精神不振,无法想到任何算法。

最佳答案

应该这样做:

function findUUIDthenDelete(tree, uuid) {
if (!tree.children) return;
tree.children = tree.children.filter(c => c.uuid !== uuid);
tree.children.forEach(c => findUUIDthenDelete(c, uuid));
}

应该是不言自明的。首先,如果当前节点没有子节点,则立即退出。
接下来,如果 uuid 使用 filter() 匹配,可能会从 children 数组中删除一个子项。
最后,递归。

关于javascript - 根据属性删除 JSON 对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54528313/

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