从Javascript中嵌套数组内的对象筛选数据的最佳方法
给定以下数据,我如何按框架过滤数据并返回名称和项目?我正在尝试设置一个搜索框,它将调用过滤器函数 如果数据在数组中,我可以这样做,但不确定如何在这个嵌套数组和对象场景中工作从Javascript中嵌套数组内的对象筛选数据的最佳方法,javascript,Javascript,给定以下数据,我如何按框架过滤数据并返回名称和项目?我正在尝试设置一个搜索框,它将调用过滤器函数 如果数据在数组中,我可以这样做,但不确定如何在这个嵌套数组和对象场景中工作 const数据=[ { 姓名:“约翰·多伊”, 项目:[ {ProjectName:'something',Framework:'React'}, {ProjectName:'something',Framework:'React Native'}, {ProjectName:'something',Framework:'
const数据=[
{
姓名:“约翰·多伊”,
项目:[
{ProjectName:'something',Framework:'React'},
{ProjectName:'something',Framework:'React Native'},
{ProjectName:'something',Framework:'NextJS'},
]
},
{
姓名:“简·多伊”,
项目:[
{ProjectName:'something',Framework:'Vanilla Javascript'},
{ProjectName:'something',Framework:'Angular'},
{ProjectName:'something',Framework:'flatter'},
]
}
]
我可以使用以下方法按名称筛选:
const filteredData=data.filter((项)=>{
return item.name.toLowerCase().includes(searchField.toLowerCase());
});
但我不确定如何按项目名称或框架进行筛选。在筛选中,如果至少满足一次条件,您可以使用what's return true 示例:您将能够拥有具有给定项目名称的每个用户
let filteredData = data.filter(i => i.projects.some(p => p.ProjectName === 'something'))
如果您正在查找内部的过滤对象,这意味着删除没有正确项目名称的无用项目,您可以在过滤数据上添加映射
filteredData.map(i => {
i.projects = i.projects.filter(p => p.ProjectName === 'something');
return i;
})
这回答了你的问题吗?