0
我想写一个Observable来从类似CSV文件的东西中返回对象。我的问题是我想使用该文件的标题,将其用作Observer的下一个元素的属性名称。举例来说,如果我有这样的CSV:如何从observable获取第一个元素并返回该流的其余部分的可观察值?
symbol;word
1;one
2;two
3;three
我希望这种情况发生:
getObjects().subscribe(o => console.log(o));
// should log this:
{ symbol: '1', word: 'one' }
{ symbol: '2', word: 'two' }
{ symbol: '3', word: 'three' }
我设法与此代码做到这一点:
const Rx = require('rxjs/Rx');
const _zipObject = require('lodash/zipObject');
const getObjects =() => {
const observable = Rx.Observable.of(
['symbol', 'word'],
['1', 'one'],
['2', 'two'],
['3', 'three']
).share();
let header;
return Rx.Observable.concat(
observable.first().do(line => header = line).filter(() => false),
observable.skip(1).map(line => _zipObject(header, line))
);
};
getObjects().subscribe(o => console.log(o));
它的工作原理,但没有按感觉不错。我还想过使用过滤器来过滤第一个元素并设置头文件,但它不会感觉好多了,并且会为每个元素调用过滤器回调函数。
太好了!谢谢!! –