我想找出数据中出现两次的数据,我的想法是:
先用 id 分组
然后用 map 把他们变成数组:
[{ id: 1, type: 1 },{ id: 1, type: 1 }]
[{ id: 2, type: 1 }]
[{ id: 3, type: 1 }]
然后在 filter 过滤数组长度 == 2 的数据
再在 map 拿出其中一条就行了
但是不如预期的执行得到我想要的数据,是哪里出错了呢
我想找出数据中出现两次的数据,我的想法是:
先用 id 分组
然后用 map 把他们变成数组:
[{ id: 1, type: 1 },{ id: 1, type: 1 }]
[{ id: 2, type: 1 }]
[{ id: 3, type: 1 }]
然后在 filter 过滤数组长度 == 2 的数据
再在 map 拿出其中一条就行了
但是不如预期的执行得到我想要的数据,是哪里出错了呢
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)
})
2 回答1.4k 阅读✓ 已解决
1 回答622 阅读✓ 已解决
2 回答727 阅读✓ 已解决
1 回答556 阅读✓ 已解决
既然上reduce了,就可以解决这个需求的大部分逻辑了
然后按对象的value filter一下就可以了。没用rxjs,你可以根据这个思路改下