RxJS5 - 将对象映射转换为数组的运算符
RxJS5 - Operator to convert object map to array
我有一个服务 returns 一个对象映射,然后在 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();
你应该能够用 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>
我有一个服务 returns 一个对象映射,然后在 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();
你应该能够用 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>