我有一个对象数组,其中包含更多深度未知的对象(具有相同结构)。
sTree = [{
Tree: [{
Tree: [{
}],
Leafs:[{},{},{}]
}],
Leafs:[{},{},{}]
}
这是一棵经典(实际)的树
每个Object在DOM对象中都有一个引用(使用$(obj).data("ref",obj)
)。
|这部分已完成|
用户正在使用obj.deleted = true
标记某些对象
|这部分已完成|
当用户完成后,我想返回sTree
,而不会使用deleted=true
标记的项目。
怎么做?
感谢
答案 0 :(得分:1)
用递归来做。循环结构并检查每个项目:
function cleanTree(tree){
for(var i in tree){
if(tree[i].deleted){
// debug output
console.log('delete '+tree[i].toString());
delete tree[i];
}else{
// debug output
console.log('look at '+tree[i].toString());
tree[i] = cleanTree(tree[i]);
}
}
return tree;
}
你必须稍微改变for循环的内部才能使用你的结构。