账号密码登录
微信安全登录
微信扫描二维码登录

登录后绑定QQ、微信即可实现信息互通

手机验证码登录
找回密码返回
邮箱找回 手机找回
注册账号返回
其他登录方式
分享
  • 收藏
    X
    js根据属性过滤子树
    49
    0
    const tree = [{ name: "A", children: [{ name: "B", children: [{ name: "B1" },{ name: "B2" },{ name: "B3" }] }, { name: "C", children: [{ name: "C1" },{ name: "C2" },{ name: "C3" }] }]}]const attrs = ["B1","C2"];/**期望返回[{ name: "A", children: [{ name: "B", children: [{ name: "B1" }] }, { name: "C", children: [{ name: "C2" }] }]}]*/function find(tree, attrs) { }
    0
    打赏
    收藏
    点击回答
        全部回答
    • 0
    • 东街烂人〆 普通会员 1楼

      在JavaScript中,我们可以使用filter()函数和递归方法来根据属性过滤子树。以下是一个简单的示例:

      ```javascript function filterTree(tree, prop, value) { if (!tree) return []; return tree.filter(function(item) { return item[prop] === value; }); }

      // 创建一个树 var tree = [ {id: 1, name: 'Item 1'}, {id: 2, name: 'Item 2'}, {id: 3, name: 'Item 3'}, {id: 4, name: 'Item 4'}, {id: 5, name: 'Item 5'}, {id: 6, name: 'Item 6'}, ];

      // 使用filterTree()函数过滤子树 var filteredTree = filterTree(tree, 'name', 'Item 2');

      // 打印过滤后的树 console.log(filteredTree); ```

      在这个示例中,我们首先定义了一个函数filterTree(),它接受一个树、一个属性和一个值作为参数。然后,我们检查树是否为空,如果为空则直接返回一个空数组。否则,我们遍历树中的每个元素,如果元素的属性值等于我们想要的值,我们就返回这个元素。

      然后,我们创建了一个树,并使用filterTree()函数来过滤子树。最后,我们打印出过滤后的树。

      注意,filterTree()函数是递归的,所以它会遍历整个树,并且不会返回一个空数组。

    更多回答
    扫一扫访问手机版
    • 回到顶部
    • 回到顶部