递归地从多维数组中删除标记元素



我有一个对象数组,其中包含更多深度未知的对象数组(具有相同的结构)。

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循环的内部来适应你的结构。

相关内容

  • 没有找到相关文章

最新更新