[英]how to use recursion in javascript class?
class Tasks {
constructor () {
this.store = [];
}
addTask(taskName) {
var task = {
id: +Date.now(),
task: taskName,
children: []
}
this.store.push(task);
}
deleteTask(id) {
this.store = this.store.filter(function(task) {return task.id! !=
id});
}
}
目前我有这段代码。 我通过var todos = new Tasks();
访问它添加todos.add('Do something');
todods.delete(id);
这适用于非嵌套任务。 我想将其用于嵌套任务/待办事项。
我想在 delete add 方法中访问商店,这样我就可以递归地添加或删除子任务。
商店看起来像这样
nestedArr = [
{
id: 1,
task: 'task 1',
children[]
},
{
id: 2,
task: 'task 2',
children [
{
id: 3,
task: 'task 1',
children[]
},
{
id: 4,
task: 'task 2',
children [
{
id: 5,
task: 'task 1',
children[]
},
{
id: 6,
task: 'task 2',
children []
}
]
}
]
}
]
就像我可以使用函数来做这些,但我想在课堂上使用它
deleteTask(arr, id) { .....
this.deleteTask(arr.children, id) { ... }
}
相反,我会像这样构建商店,并让所有任务都将“父级”作为属性(如果没有父级则为 -1)。 children 数组应包含其子项的 ID。
如果你想根据task
删除一些项目,只需按照以下顺序进行:
children
数组中删除。 nestedArr = [{ id: 1, task: 'task 1', parent: -1, children: [] }, { id: 2, task: 'task 2', parent: -1, children: [3] }, { id: 3, task: 'task 1', parent: 2, children: [] }, { id: 4, task: 'task 2', parent: -1, children: [5, 6] }, { id: 5, task: 'task 1', parent: 4, children: [] }, { id: 6, task: 'task 2', parent: 4, children: [] } ]
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.