우선 스트림에 익숙하지 않아 일부 일반적인 패턴을 파악할 수 있습니다.어떻게 스트림을 그룹화 한 다음 그룹의 키를 기반으로 그룹을 개별적으로 처리합니까?
많은 라이브러리에서 .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;
});
I '는'각 그룹의 첫 번째 요소를 사용하지 않고 (그리고 그룹의 첫 번째 요소는 소비되는 경우를의 값을 얻는 방법을 볼 수 없습니다 그룹은 더 이상 손상되지 않습니다).
이것은 나에게 스트림과 관련이있는 공통점이있는 것 같습니다. 잘못된 접근 방식을 취하고 있습니까?
--- 편집 --- 여기
내가에 붙어있어 문제의보다 구체적인 예이다 :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이고 다른 객체는 똑바로 통과합니까?
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 –