var dlist = [
{
name: 'n1',
id: 'n1',
child: [
{
name: 'n1-1',
id: 'n1-1',
child: [
name: 'n1-2',
id: 'n1-2'
],
},
{
name: 'n2-2',
id: 'n2-2'
}
]
},
{
name: 'n2',
id: 'n2'
},
]
类似于这种,子集是无限级的情况
当我们操作父级控制子集,这很好办。
当操作子集,去控制父级的情况,逻辑是:获取当前子集的父级,再针对各种情况递归操作。
主要方法:获取当前子集的父级的方法:
function getParent(id) {
for (var i=0; i<dlist.length; i++) {
if (dlist[i].id==id) {
return null;
}
}
return _getParent(dlist);
function _getParent(list) {
var childlist,
isExist = false;
for (var i=0; i<list.length; i++) {
if (childlist=list[i].children) {
childlist.forEach(function(v,i2) {
if (v.id==id)
isExist = true;
});
if (isExist) {
return list[i];
}
if (_getParent(childlist)) {
return _getParent(childlist);
}
}
};
}
}