簡體   English   中英

從 Javascript 中嵌套數組內的對象中過濾數據的最佳方法

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM