我有一个分层数据结构,例如:
var tree = [ {foo: 1, children:[
{foo: 2, children:[
{foo: 13, children:[]},
{foo: 14, children:[]}
]},
{foo: 3, children:[]},
{foo: 4, children:[]}
]},
{foo: 5, children:[
{foo: 6, children:[]},
{foo: 8, children:[]}
]},
{foo: 9, children:[
{foo: 10, children:[]},
{foo: 11, children:[]},
{foo: 12, children:[]}
]} ];
树可以是任何深度。
为了重新定位树中的特定对象(包括它的子对象),我可以简单地编写:
// Move object from [0, 0, 1] to [2, 1]
var obj = tree[0]['children'][0]['children'][1];
tree[0]['children'][0]['children'].splice(1, 1);
tree[2]['children'].splice(1, 0, obj);
但我无法对一般情况进行编程:
给定两组坐标,将对象从 [i1, i2, ..., im] 重新定位到 [j1, j2, ..., jn]。
我想要一些关于如何构造这个递归算法的提示。虽然这是一个纯 Javascript 问题,但我应该注意我的应用程序使用 AngularJS 和 jQuery。也许这些库提供了我可以使用的数组操作函数?