まず、私はストリームにはかなり新しいので、まだいくつかの共通パターンを把握しています。ストリームをグループ化し、グループのキーに基づいて別々にグループを処理するにはどうすればいいですか?
多くのライブラリでは、.groupBy(keySelectorFn)を使用してストリームをストリームのストリームに分割できます。例えば、このストリームが '各オブジェクト内の値に基づいて、ストリームに分割される(擬似コード、任意の特定のライブラリに基づいていない):
var groups = Stream.of(
{ a: 1, b: 0 },
{ a: 1, b: 1 },
{ a: 2, b: 2 },
{ a: 1, b: 3 }
)
.groupBy(get('a'));
私はに基づいて異なるグループを処理したいと言いますそのグループの「A」の値:
groups.map(function(group) {
if (..?) {
// Run the group through some process
}
return group;
});
私は、各グループの最初の要素を消費することなく「」の値を取得する方法を見ることができない(グループの最初の要素が消費されている場合グループはもはや無傷ではない)。
これは私がストリームでやりたいことはかなり共通しているようです。私は間違ったアプローチをしていますか?
--- EDIT ---ここ
は私がこだわっている問題のより具体的な例を示します
var groups = Stream.of(
{ a: 1, b: 0 },
{ a: 1, b: 1 },
{ a: 2, b: 0 },
{ a: 2, b: 1 },
{ a: 2, b: 2 },
{ a: 1, b: 2 }
)
.groupBy(get('a'));
どこ=== 1最初の1つのオブジェクトを選択する方法最初の2つのオブジェクトは=== 2で、他のオブジェクトはまっすぐに渡しますか?これは私にとって論理的だと思われます。
groups.chain(function(group) {
return group.key === 1 ?
group.take(1) :
group.key === 2 ?
group.take(2) :
group ;
});
しかし、group.keyは存在しません。
このようなものをお探しですか?:http://jsbin.com/haliqerita/edit?js,console –