首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >在JavaScript的筛选器中应用筛选器

在JavaScript的筛选器中应用筛选器
EN

Stack Overflow用户
提问于 2018-07-20 04:04:33
回答 2查看 70关注 0票数 2

在数组中查找数组中的值时,如何在JavaScript中的filter中应用filter

比方说,我想要获得其团队包括Jane Smith的所有construction项目。

我意识到我在这里发明了一些疯狂的JavaScript,我只是想让你看看我想要什么。

代码语言:javascript
复制
const result = myArray.filter(x => x.type === "construction" && x.team.filter(y => y.name.includes("Jane Smith")));

下面是我想要过滤的数组:

代码语言:javascript
复制
[
   {
      "type": "construction",
      "name": "Project A",
      "team": [
         {
            "name": "John Doe",
            "position": "Engineer"
         },
         {
            "name": "Jane Smith",
            "position": "Architect"
         }
      ]
   },
   {
      "type": "construction",
      "name": "Project B",
      "team": [
         {
            "name": "Walt Disney",
            "position": "Creative Director"
         },
         {
            "name": "Albert Einstein",
            "position": "Scientist"
         }
      ]
   },
   {
      "type": "remodelling",
      "name": "Project C",
      "team": [
         {
            "name": "John Travolta",
            "position": "Manager"
         }
      ]
   }
]
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2018-07-20 04:09:08

您可以使用Array#some来检查团队。

本提案对对象使用destructuring assignment

代码语言:javascript
复制
var array = [{ type: "construction", name: "Project A", team: [{ name: "John Doe", position: "Engineer" }, { name: "Jane Smith", position: "Architect" }] }, { type: "construction", name: "Project B", team: [{ name: "Walt Disney", position: "Creative Director" }, { name: "Albert Einstein", position: "Scientist" }] }, { type: "remodelling", name: "Project C", team: [{ name: "John Travolta", position: "Manager" }] }],
    result = array.filter(({ type, team }) =>
        type === "construction" && team.some(({ name }) => name === "Jane Smith"));

console.log(result);
代码语言:javascript
复制
.as-console-wrapper { max-height: 100% !important; top: 0; }

票数 4
EN

Stack Overflow用户

发布于 2018-07-20 04:07:46

也许是像下面这样的东西?

代码语言:javascript
复制
const result = myArray.filter(x => x.type === "construction" && x.team.filter(y => y.name.includes("Jane Smith")).length > 0);

基本上,我只是检查新过滤的数组长度是否大于0。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51430908

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档