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));
它的工作原理,但沒有按感覺不錯。我還想過使用過濾器來過濾第一個元素並設置頭文件,但它不會感覺好多了,並且會爲每個元素調用過濾器回調函數。
太好了!謝謝!! –