RxJS5 - 将对象映射转换为数组

时间:2017-01-26 03:27:16

标签: angular rxjs5

我有一个返回一个对象映射的服务,然后在Angular的ngFor中使用它,它只接受数组。所以,我使用map操作符和lodash的_toArray将数据转换为数组。

虽然这有效,但我必须在任何地方导入lodash,我需要这样做,而且看起来很脆弱。我打算研究创建一个自定义运算符,但也许有一个运算符已经这样做了?我似乎找不到合适的人

数据:

{ 0 : {data : 'lorem'}, 1 : {data : 'lorem'}, 2 : {data : 'lorem'} }

电流:

this.http
    .get('/api')
    .map(data => _.toArray(data));

可能的?

this.http
    .get('/api')
    .mapToArray();

1 个答案:

答案 0 :(得分:9)

您应该可以使用RxJS的map运算符和Object.keys()方法执行您想要的操作。



Rx.Observable
  .of({
    0: { data : 'lorem' },
    1: { data : 'lorem' },
    2: { data : 'lorem' }
  })
  .map(data => Object.keys(data).map(k => data[k]))
  .subscribe(data => console.log(data));

<script src="https://npmcdn.com/@reactivex/rxjs@5.0.3/dist/global/Rx.min.js"></script>
&#13;
&#13;
&#13;