[
{
task : { id : 1, id_parent : "", , is_parent : true }
},
{
task : { id : 2, id_parent : "", , is_parent : true }
},
{
task : { id : 3, id_parent : "1", , is_parent : false }
},
{
task : { id : 4, id_parent : "2", , is_parent : false }
},
{
task : { id : 5, id_parent : "1", , is_parent : false }
},
{
task : { id : 6, id_parent : "1", , is_parent : true }
},
{
task : { id : 7, id_parent : "2", , is_parent : false }
},
{
task : { id : 8, id_parent : "2", , is_parent : true }
},
{
task : { id : 9, id_parent : "1", , is_parent : true }
},
{
task : { id : 10, id_parent : "9", , is_parent : false }
},
{
task : { id : 11, id_parent : "9", , is_parent : false }
},
{
task : { id : 12, id_parent : "8", , is_parent : true }
},
{
task : { id : 13, id_parent : "2", , is_parent : false }
},
{
task : { id : 14, id_parent : "6", , is_parent : true }
},
{
task : { id : 15, id_parent : "12", , is_parent : true }
},
{
task : { id : 16, id_parent : "15", , is_parent : false }
},
{
task : { id : 17, id_parent : "8", , is_parent : false }
},
{
task : { id : 18, id_parent : "15", , is_parent : false }
}
]
// return direct child of the id_task
// where this direct child is a prent
this.getDirectChildParent = function(id_task, array_tasks){
var tasks = array_tasks;
if (array_tasks === undefined) {
tasks = this.getAllTasks();
}
var allChildParent = [];
for (var i = 0; i < tasks.length; i++) {
var task = tasks[i].task;
if(task.is_parent && task.id_parent == id_task) allChildParent.push(task.id);
}
return allChildParent;
}
// return direct child of the id_task
// where this direct child is not a prent
this.getDirectNotParentChild = function(id_task, array_tasks){
var tasks = array_tasks;
if (array_tasks === undefined) {
tasks = this.getAllTasks();
}
var allDirectChild = [];
for (var i = 0; i < tasks.length; i++) {
var task = tasks[i].task;
if(!task.is_parent && task.id_parent == id_task) {
allDirectChild.push(task.id);
/*tasks.splice(i, 1);
i--;*/
}
}
return allDirectChild;
}
this.getAllChilderenTask = function(id_task, array_tasks){
var id_child = [];
var tasks = array_tasks;
if (array_tasks === undefined) {
tasks = this.getAllTasks();
}
id_child = id_child.concat(this.getDirectNotParentChild (id_task, tasks));
id_child_parent = this.getDirectChildParent (id_task, tasks);
id_child = id_child.concat(id_child_parent);
if(id_child_parent.length != 0){
for (var i = 0; i < id_child_parent.length; i++) {
id_child = id_child.concat( this.getAllChilderenTask (id_child_parent[i], tasks) );
}
}
return id_child;
}
您好,
我试图制作一个让我回到一个孩子阵容的功能。
我的问题是,当我使用我的功能时,它可以工作,但它并没有给我所有选择的孩子,例如当我做了object.getAllChilderenTask(1)它返回:
但正确的应该是:[3,5,6,9,10,11,14]
我发现了问题,但我不知道如何修复它。
if(id_child_parent.length != 0){
for (var i = 0; i < id_child_parent.length; i++) {
id_child = id_child.concat( this.getAllChilderenTask (id_child_parent[i], tasks) );
}
}
它仅循环第一个元素(WTF)
如果我从循环中删除id_child,它会在所有元素上循环,我使用递归方法(getAllChilderenTask)。
你有什么想法吗?