Problems of grouping and merging of Rxjs
						
							
  
 
 I want to find the data that appears twice in the data. My idea is: 
 first group 
 with id and then turn them into arrays with map: 
 [{id: 1, type: 1}, {id: 1, type: 1}] 
 [{id: 2, type: 1}] 
 [{id: 3, type: 1}] 
 then filter the data with array length = 2 in filter 
 and then take out one of them in map 
, but what went wrong when I got the data I wanted.
						
 
												
					 
					
						
 now that you are on reduce, you can solve most of the logic of this requirement 
const chatrooms = [{ id: 1, type: 1 },{ id: 1, type: 1 },{ id: 2, type: 1 }, { id: 3, type: 1 }]
chatrooms.reduce((o, curr) => {
    const values = o[curr.id] || []
    o[curr.id] = [...values, curr]
    return o
}, {})
 then press the value filter of the object. Do not use rxjs, you can change 
 according to this 
idea.
 import { from } from 'rxjs'
import { filter, groupBy, mergeMap, take, toArray } from 'rxjs/operators'
const arr = [
  { id: 1, type: 1 },
  { id: 1, type: 1 },
  { id: 2, type: 1 },
  { id: 3, type: 1 },
  { id: 3, type: 1 },
]
from(arr)
  .pipe(
    groupBy(val => val.id),
    mergeMap(val => val.pipe(toArray())),
    filter(val => val.length === 2),
    take(1),
  )
  .subscribe(val => {
    console.log(val)
  })