javascript - 如何过滤另一个对象数组中的对象数组
问题描述
我有一组“合作伙伴”(如下所示),需要按标签过滤它们。
partners:
[
{
name: 'Partner X',
solution: [
{
label: 'Label 1',
},
{
label: 'Label 2',
}
]
},
{
name: 'Partner Y',
solution: [
{
label: 'Label 1'
}
]
}
]
我的问题是我无法过滤“解决方案”数组。我最好的尝试是在另一个过滤器中使用一个过滤器,如下所示:
partnerFilter() {
const partnersClean = this.partners.filter(function(e) {
return e.solution.filter(function(item) {
return item.label === 'Label 2'
})
})
return partnersClean
}
结果始终显示两个合作伙伴。我也在这里搜索了类似的案例,但是数组中没有对象,他们使用了 indexOf() 或 includes(),在这种情况下我都无法做到。
如果有人可以提供帮助,我将不胜感激。
解决方案
这样做是这样的:
partnerFilter() {
const partnersClean = this.partners.map(function(e) {
e.solution = e.solution.filter(function(item) {
return item.label === 'Label 2'
});
return e;
})
return partnersClean
}
这将删除输入中带有标签Label 1
的解决方案,保持其他字段name
不变。所有合作伙伴都将出现在输出中,即使solution
他们没有任何对象。
推荐阅读
- javascript - 我们可以在 javascript 中的类函数上使用 async/await 吗?
- javascript - JavaScript Circle 在碰撞时消失
- arrays - 最后一个数组元素的总和
- arrays - F# 三个数组 - 用新值替换原始数组中的唯一值
- c# - Xamarin android C#图像位图加载到异步,异步任务
- vb.net - Visual Basic TCP 数据损坏
- docker - Hyperledger Fabric Orderers 不会从不同的机器连接到 Kafka Brokers
- python - Python Matplotlib:如何在保持刻度的同时显示刻度标签的特定间隔
- angular - 为什么我的 httpclient 中的 rxjs 管道函数返回 Observable
- python - 在 Django 中以小写形式显示 URL