arrays - 我如何过滤一组对象以仅显示具有所有现有类型属性的对象的 id
问题描述
我从如下所示的 API 获取数据:
const flags = [
{
type: "manyCards",
id: 1
},
{
type: "manyCards",
id: 2
},
{
type: ":premiumCard",
id: 1
},
]
我想对其进行过滤/排序,以便它仅显示具有所有类型的 id,例如。id:1 同时拥有 manyCards 和 premiumCard。
我的结果就是result = [1]
在这种情况下。
无法弄清楚要使用什么 Array 原型。
解决方案
为此,我将按 id 对初始数据进行分组,这样我们就可以知道每个 id 有多少种类型。
完成此操作后,我们可以使用我们想要的任何条件进行过滤。
const flags = [
{
type: "manyCards",
id: 1
},
{
type: "manyCards",
id: 2
},
{
type: ":premiumCard",
id: 1
},
{
type: "manyCards",
id: 3
},
{
type: "manyCards",
id: 2
},
{
type: ":premiumCard",
id: 3
},
]
let grouped = flags.reduce(function (r, a) {
r[a.id] = r[a.id] || []
r[a.id].push(a.type)
return r
}, {})
let result = Object.keys(grouped).filter(elem => (grouped[elem].includes("manyCards") && grouped[elem].includes(":premiumCard")))
console.log(result)
推荐阅读
- reactjs - Django视图没有从多参数请求中返回值?
- python - 使用更多按钮和 JSON 文件从站点抓取数据不会加载
- python - 使用深度学习的多类多标签分类问题中损失函数的计算过程是怎样的?
- haskell - 为什么我必须调用“sum”两次才能对“Maybe Integer”列表求和?
- c++ - 具有多个完成队列的多线程异步 GRPC 服务器阻塞并发请求
- reactjs - 根据切换开关显示/隐藏div
- javascript - 在其他地方安装之前如何构建本地包?
- excel - Powershell,关闭 Excel
- avplayer - tizen av-play api 支持 m3u8 吗?
- mongodb - MongoRestore 4.2 将恢复的数据库大小减少到一半