[英]Best way to filter data from objects inside nested array in Javascript
給定以下數據,如何按框架過濾數據並返回名稱和項目? 我正在嘗試設置一個搜索框來調用過濾器 function。
如果數據在數組中,我可以這樣做,但不確定如何在這個嵌套數組和 object 場景中工作。
const data = [
{
name: 'John Doe',
projects: [
{ ProjectName: 'something', Framework: 'React' },
{ ProjectName: 'something', Framework: 'React Native' },
{ ProjectName: 'something', Framework: 'NextJS' },
]
},
{
name: 'Jane Doe',
projects: [
{ ProjectName: 'something', Framework: 'Vanilla Javascript' },
{ ProjectName: 'something', Framework: 'Angular' },
{ ProjectName: 'something', Framework: 'Flutter' },
]
}
]
我可以使用這個按名稱過濾:
const filteredData = data.filter((item) => {
return item.name.toLowerCase().includes(searchField.toLowerCase());
});
但我不確定如何按項目名稱或框架進行過濾。
在您的過濾器中,您可以使用一些如果條件至少滿足一次將返回 true 示例:您將能夠讓每個用戶都具有給定的項目名稱
let filteredData = data.filter(i => i.projects.some(p => p.ProjectName === 'something'))
如果您正在尋找內部過濾的對象,這意味着,刪除沒有正確項目名稱的無用項目,您可以在過濾的數據上添加 map
filteredData.map(i => {
i.projects = i.projects.filter(p => p.ProjectName === 'something');
return i;
})
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.