使用combineLatest

时间:2018-05-16 09:10:59

标签: javascript typescript rxjs observable combinelatest

我有两个可观察的数组:第一个数组对象可观察

 array1= Observable.of({
      data: [
      {
          name: 'test',
          lastname: 'last'
        },
         {
          name: 'test1',
          lastname: 'last1'
        }
      ]
    }).map(res => {
      return res.data;
    });



// Second Observable:
    array2 = Observable.of('test1');

上述两个数组的预期结果是,无论firstname与array2值匹配,从该对象获取lastname。

//Expected Result: 
object3=Observable.of('last')

1 个答案:

答案 0 :(得分:0)

看起来你正在使用RxJS 5.4,所以你可以这样做,例如:

Observable.combineLatest(array1, array2)
  .map(([users, name]) => {
    const user = users.find(u => u.name === name);
    return user ? user.lastname : null;
  })
  .subscribe(console.log);

查看现场演示:https://stackblitz.com/edit/rxjs5-4nyq3s?file=index.ts