0

假设我有两个高地溪流:

import hl from 'highland'

const accounts = hl([
  {id: 1, name: "Bob"},
  {id: 2, name: "Chris"},
]);

const accountData = hl([
  {id: 1, age: 21},
  {id: 2, age: 43},
]);

我想映射accounts流并合并额外的数据,accountData因此结果如下所示:

Highland.Stream<[
  {id: 1, name: "Bob", age: 21},
  {id: 2, name: "Chris", age: 43},
]>

这对于普通数组来说非常简单,但我想知道在使用流时是否可能。

4

1 回答 1

0
import hl from 'highland';

const accounts = hl([
  { id: 1, name: 'Bob' },
  { id: 2, name: 'Chris' }
]);

const accountData = hl([
  { id: 1, age: 21 },
  { id: 2, age: 43 }
]);

hl([ accounts, accountData ])
  .merge()
  .reduce(new Map(), (accum, account) => {
    const { id }        = account;
    const mergedAccount = Object.assign({}, accum.get(id), account);
    return accum.set(id, mergedAccount);
  })
  .map(map => [ ...map.values() ])
  .doto(console.log)
  .done(() => {});

输出:

[ 
  { id: 1, name: 'Bob', age: 21 },
  { id: 2, name: 'Chris', age: 43 } 
]
于 2022-02-02T19:25:14.517 回答