javascript - 如何过滤对象数组的子对象,然后返回具有更新子对象的父对象?
问题描述
我正在尝试过滤它的子对象数组,然后更新子对象并返回具有更新子对象的父对象。
对象数组示例:
[
{
"id": 1,
"name": "group1",
"users": [
{
"id": 1,
"name": "Mike"
},
{
"id": 2,
"name": "Steve"
},
{
"id": 3,
"name": "John"
}
]
},
{
"id": 2,
"name": "group2",
"users": [
{
"id": 4,
"name": "Phill"
},
{
"id": 5,
"name": "Joe"
},
{
"id": 6,
"name": "Dominik"
}
]
}
]
我在 React 中有一个输入,有人可以输入用户名,然后我想只显示具有该名称的用户,同时保留他们所在的组。
例如,如果输入是“迈克”,我希望结果是:
[
{
"id": 1,
"name": "group1",
"users": [
{
"id": 1,
"name": "Mike"
}
]
},
{
"id": 2,
"name": "group2",
"users": []
}
]
解决方案
let arr = [ { "id": 1, "name": "group1", "users": [ { "id": 1, "name": "Mike" }, { "id": 2, "name": "Steve" }, { "id": 3, "name": "John" } ] }, { "id": 2, "name": "group2", "users": [ { "id": 4, "name": "Phill" }, { "id": 5, "name": "Joe" }, { "id": 6, "name": "Dominik" } ] } ];
function filterUsers(arr, name) {
return arr.map(obj => {
return {
...obj,
"users": obj.users.filter(user => user.name === name)
};
});
}
console.log(filterUsers(arr, "Mike"));
推荐阅读
- javascript - 如何在 Laravel 中的按钮上使用 Ajax?
- python - 使用列表理解的字符串操作
- bash - 如何睡在贝壳里?
- quaternions - 如何从四元数数据中计算角度方向(姿态)的时间导数?
- javascript - 遍历数组时不断变得未定义
- html - 如何修复 Bootstrap 中的下拉黎明按钮
- angular - 在角度数据表中实现服务器端分页
- javascript - How do I set a value as a string React-Native?
- react-native - 程序在浏览器中显示正常但无法在电子窗口中加载资源
- reactjs - 使用 redux 将对象添加到数组