【发布时间】:2020-05-27 19:48:43
【问题描述】:
我正在使用 bootstrap treeview.js 来创建树结构。我已经对此进行了修改并创建了 2 个 btns 用于添加和删除新条目。 添加测试条目后,这是我创建树的输出 JSON
[
{
"nodes":[
],
"tag_type":"parent",
"name":"System Summary",
"id":"XS1025",
"desc":"KPI\"s for System Summary"
},
{
"nodes":[
{
"nodes":[
],
"tag_type":"child",
"name":"Network",
"id":"XS1026",
"desc":"KPI\"s for Network"
},
{
"nodes":[
],
"tag_type":"parent",
"name":"test1",
"id":"t1234",
"desc":"davjwd we "
}
],
"tag_type":"parent",
"name":"Monthly CMTS Summary",
"id":"RS1001",
"desc":"KPI\"s for Monthly CMTS Summary"
}
]
现在对于删除,我得到了用户要删除的选定 ID。但无法从 JSON 中删除它。 下面是我正在尝试的代码。
deleteNodeFromKpiListData(nodeData: any, nodeId: any): void {
//nodeData is a single object entry for recursively called function, and nodeId is the selected ID
for (const [key, result] of Object.entries(nodeData)) {
if (result['id'] === nodeId) {
// Here I was trying to delete the objkect from actual JSON
break;
} else if (result['nodes'].length > 0) {
this.deleteNodeFromKpiListData(result['nodes'], nodeId);
}
}
}
我尝试过 .filter() 和 .splice() 方法从数组中删除对象。但它工作不正常。 示例:如果用户选择删除“test”,则 nodeId = “t1234” 并且 JSON 将为
[
{
"nodes":[
],
"tag_type":"parent",
"name":"System Summary",
"id":"XS1025",
"desc":"KPI\"s for System Summary"
},
{
"nodes":[
{
"nodes":[
],
"tag_type":"child",
"name":"Network",
"id":"XS1026",
"desc":"KPI\"s for Network"
}
],
"tag_type":"parent",
"name":"Monthly CMTS Summary",
"id":"RS1001",
"desc":"KPI\"s for Monthly CMTS Summary"
}
]
这是一个带有 typescript 的 Angular 项目。但是 JavaScript 代码也会有很大的帮助。
【问题讨论】:
标签: javascript arrays typescript object angular6