【问题标题】:Best way to filter data from objects inside nested array in Javascript在Javascript中从嵌套数组中的对象中过滤数据的最佳方法
【发布时间】:2021-06-19 09:38:17
【问题描述】:

鉴于以下数据,我如何按框架过滤数据并返回名称和项目?我正在尝试设置一个可以调用过滤功能的搜索框。

如果数据在数组中,我可以这样做,但不确定如何在这种嵌套数组和对象场景中工作。

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

但我不确定如何按项目名称或框架进行过滤。

【问题讨论】:

标签: javascript


【解决方案1】:

在您的过滤器中,您可以使用 some 如果条件至少满足一次,则返回 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;
})

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-11-14
    • 2020-05-22
    • 2021-05-09
    • 2021-11-18
    相关资源
    最近更新 更多