我有一堂课,看起来像这样:
class Foo{
id:string;
name:string;
childFooIds: string[];
}
每个Foo都可以按ID存储子Foo,而我将所有foo存储在一个对象中:
fooCollection:{
[id:string] : Foo
}
我想编写一个从
fooCollection
删除Foo的方法。我想递归地遍历其子级foos
和其子级foos
等,并将其从我的fooCollection
中删除。关于如何执行此操作有任何想法吗? 最佳答案
如果我是正确的,则fooCollection将看起来像这样
var fooCollection = {
'1': new Foo('1','abc1',['3','4']),
'2': new Foo('2','abc2',['6','7']),
'3': new Foo('3','abc3',[]),
'4': new Foo('4','abc4',['8']),
'5': new Foo('5','abc5',[]),
'6': new Foo('6','abc6',[]),
'7': new Foo('7','abc7',[]),
'8': new Foo('8','abc8',[]),
}
递归地从fooCollection中删除fooId的方法
function removeFoo(fooId){
var fooObj = fooCollection[fooId];
if(fooObj){
for(var i = 0; i < fooObj.childFooIds.length;i++){
removeFoo(fooObj.childFooIds[i]);
}
delete fooCollection[fooId];
}
}
叫它
removeFoo('1');
现在fooCollection应该看起来像这样
{
'2': new Foo('2','abc2',['6','7']),
'5': new Foo('5','abc5',[]),
'6': new Foo('6','abc6',[]),
'7': new Foo('7','abc7',[])
}