rxjs树搜索

时间:2017-10-13 05:41:23

标签: tree rxjs

我是rxjs的新手,需要找到一个算法,通过树内的id来查找节点。这是我最好的方法(gistrun中的公开要点):

{username: 'user1', id: 1, lastName: 'ln1' }
{username: 'user2', id: 0, lastName: 'ln2' }

它没找到根,我想走路只扔掉与id开始相匹配的叶子,丢弃我发明的轮子。

  1. 如何在第一级维护搜索?
  2. 是否有任何运算符可以通过regexp进行过滤?
  3. 任何rxjs运算符都会执行递归查找吗?
  4. 提前全部谢谢。

1 个答案:

答案 0 :(得分:1)

好的,我不会详细介绍您的树例子,但我可以回答您的问题,这可能会帮助您弄清楚一些事情。

如何维护状态

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

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