【发布时间】:2017-05-30 20:34:22
【问题描述】:
我有一个 JavaScript 对象来管理我的应用程序的所有数据。它看起来像这样:
parent = {
data: 'abcdef',
children: {
'child1' : {
data: 'ghijkl',
children: {...}
},
'child2' : {
data: 'mnopqr',
children: {...}
}
}
}
为了管理哪个是当前活动的节点,我保留了一个名为“地址”的数组,它是一个列表,其中列出了要遍历整个结构并到达所需点的名称。例如,[] 作为地址给出了整个结构,['child1'] 作为地址给出了主对象的'child1'。
我的问题是,给定一个地址,我需要能够删除该特定节点,该节点可以在整个结构中任意深入,我该怎么做?例如 remove(['child1']) 应该从示例结构中删除 'child1',而 'child2' 保持不变。所有删除操作都应返回删除单个节点的整个结构。
【问题讨论】:
-
可能像这样
delete parent.children['child1']; -
也许适合儿童的数组更适合...
-
@LGSon 问题在于它们嵌套的深度任意。我可能需要删除 child1 的孩子的孩子的孩子。该方法仅在深度为 1 时有效。我的示例没有很好地解释这一点。
-
(1) 为什么你的地址是一个数组而不仅仅是一个字符串(根可能为空,目标对象的属性名可能为空)? (2) 你所有的嵌套属性名称都是唯一的,否则你怎么知道哪个是目标? (3) 如果数组应该给出目标的path,那么为什么在你的例子中你有
['child1']而不是['children', 'child1']? -
所以当你说任意深度时,你的地址会不会像
[childN,childN2,childN3]?
标签: javascript arrays object javascript-objects