Tree rxjs树搜索

Tree rxjs树搜索,tree,rxjs,Tree,Rxjs,我是rxjs新手,需要找到一种算法,通过树中的id查找节点。这是我最好的方法(可在中作为公共要点获得): 它找不到根,我只想走路,扔掉与id匹配的叶子,然后扔掉我发明的轮子 如何在第一级维护搜索? 是否有要按regexp筛选的运算符? 任何rxjs运算符都会进行递归查找? 提前感谢大家。好的,我不会详细介绍您的树示例,但我可以回答您的问题,这可能会帮助您解决一些问题 如何保持状态 一种简单的方法是将状态保存在临时对象中 Observable.of(1) .flatMap(nu

我是rxjs新手,需要找到一种算法,通过树中的id查找节点。这是我最好的方法(可在中作为公共要点获得):

它找不到根,我只想走路,扔掉与id匹配的叶子,然后扔掉我发明的轮子

  • 如何在第一级维护搜索?
  • 是否有要按regexp筛选的运算符?
  • 任何rxjs运算符都会进行递归查找?

  • 提前感谢大家。

    好的,我不会详细介绍您的树示例,但我可以回答您的问题,这可能会帮助您解决一些问题

    如何保持状态

    一种简单的方法是将状态保存在临时对象中

    Observable.of(1)
              .flatMap(number => Observable.of({ start: number, value: 'a' }))
              .subscribe(({start, value}) => console.log(start + '/' + value)); // output: 1/a
    
    是否有要按regexp筛选的运算符?

    不,但是你可以自己轻松地那样做

    let names$ = Observable.of('adam', 'amy', 'ben');
    let regex = /a.*/;
    
    names$.filter(name => regex.test(name))  // emits: 'adam', 'amy
    
    任何rxjs运算符都会进行递归查找?

    是的,有扩展操作符。下面是一个简单的例子,可以为您提供指导

    Observable.of(3)
              .expand(x => Observable.of(x-1))
              .takeWhile(x => x >= 0); // emits: 3, 2, 1, 0
    

    我的第一个问题是,为什么要让这段代码可见?没有特别的需要,因为我尝试将所有东西都实现为流的被动方法是新的。我想知道我是否能利用功能性(不可变、无副作用和声明性)加上反应性(elacticity)我的树模型的优势来管理,这与一个将随着时间无限增长的标签系统有关。我有很多解决方案,但我真的很好奇这个。。。
    Observable.of(3)
              .expand(x => Observable.of(x-1))
              .takeWhile(x => x >= 0); // emits: 3, 2, 1, 0