我有一个对象数组,其中包含更多深度未知的对象数组(具有相同的结构)。
sTree = [{
Tree: [{
Tree: [{
}],
Leafs:[{},{},{}]
}],
Leafs:[{},{},{}]
}
这是一个经典的(和实际的)树。
每个Object在DOM对象中都有一个引用(使用$(obj).data("ref",obj)
)。|这部分完成|
UI正在用obj.deleted = true
标记一些对象。
|这部分完成|
当用户完成时,我想要返回sTree
,没有deleted=true
标记的项目。
怎么做呢?
谢谢
用递归来做。循环遍历结构并检查每个项,如下所示:
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循环的内部来适应你的结构。