javascript - 过滤嵌套对象
问题描述
我正在尝试根据角色数组中的特定角色类型过滤列表,角色数组是一个对象数组。
下面是我的json
this.rolesData = [{
"firstName": "Francis",
"lastName": "Underwood",
"middleName": "",
"title": { "titleId": "1", "titleName": "AA" },
"roles": [
{"roleGuid" : 1, "roleType" : 1 },
{ "roleGuid" : 2, "roleType" : 3 }
]
},
{
"firstName": "Claire",
"lastName": "Underwood",
"middleName": "",
"title": { "titleId": "2", "titleName": "BB" },
"roles": [
{"roleGuid" : 1, "roleType" : 2 },
{ "roleGuid" : 2, "roleType" : 3 },
{ "roleGuid" : 3, "roleType" : 4 }
]
}
];
我正在尝试获取其中包含 roleType 1 的项目。所以对于我的示例,它应该只返回第一个对象,因为只有第一个对象在其角色列表中具有 roleType 1。
我在下面尝试过,但没有用
this.rolesData.filter(data => {
data.roles.filter(role => {
if (role.roleType == 1) {
return role;
}
});
});
解决方案
.filter
应该采用将返回true
或返回false
给定项目的函数。
const results = this.rolesData.filter(data => {
// Filter to matching roles
const matchingRoles = data.roles.filter(role => {
return role.roleType == 1;
});
// Return true if matching roles are found
return matchingRoles && matchingRoles.length > 0;
});
推荐阅读
- java - 为什么发布请求接受查询字符串参数?
- flutter - 做两个圆角和两个直切而不是颤动的曲线
- java - Vert.x 从 TCP 的部分字节读取
- c# - 如何筛选使用 Outlook COMobjects 集合作为 ItemsSource 的 DatGrid?
- apache-kafka - 我是否正确配置了消息和 ksql 键以确保我的最终聚合正确?
- hyperlink - 如何解决@link JavaDoc在一行和行长之间的Checkstyle冲突?
- excel - 在excel中更改日期
- razor-pages - 发布一个字符串数组
- python - 在 cython 中包装类模板和函数模板
- python - 如何对位于两个缺失值之间的列表元素进行子集化?