Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/473.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
从Javascript中嵌套数组内的对象筛选数据的最佳方法_Javascript - Fatal编程技术网

从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;
})

这回答了你的问题吗?