arrays - 如何跨嵌套数组过滤 JSON 对象数组

标签 arrays json angular typescript

我有一个对象数组,我正在根据属性名称“用户名”对其进行过滤,如下所示。

array =   [{
    "id": 1,
    "username": "admin",
    "roles": [{
            "name": "Administrator"
        },
        {
            "name": "agent"
        }
    ]
},
{
    "id": 2,
    "username": "admin2",
    "roles": [{
            "name": "Administrator2"
        },
        {
            "name": "agent2"
        }
    ]
},
{
    "id": 3,
    "username": "admin3",
    "roles": [{
            "name": "Administrator3"
        },
        {
            "name": "agent3"
        }
      ]
    }
  ]

而过滤函数是这样的

  transform(array: any, valueToSearch: string): any[] {

      return array.filter(e => 
       e.username.toLowerCase().indexOf(valueToSearch.toLowerCase()) 
       !== -1);

     }

一切正常,但现在我想过滤对象中“roles”数组中的属性名称“name”。例如,我想返回一个“roles”数组包含“name”= agent3 的对象,因此它应该返回位于我的示例中最后一个的整个对象。我尝试过像

return agents.filter(e => e.roles.filter(ee => 
       ee.valueToSearch.toLowerCase()) !== -1));

但是没有成功。

这是dmeo https://stackblitz.com/edit/angular-txchxs?embed=1&file=src/app/agentFilter.pipe.ts

最佳答案

根据您在问题中给出的示例,我能够像这样更改您现有的功能,我希望这是您的要求..

  ngOnInit() {
    this.transform(this.array,'agent3');
  }

  transform(array: any, valueToSearch: string): any[] {
    return  this.array.filter(e => {
        e.roles.filter(ee => {
          if(ee.name.toLowerCase() === valueToSearch.toLowerCase() ) {
            console.log(e);
            this.finalResult = e;
          }
        })
      })
  }

工作中的 Stackblitz:https://stackblitz.com/edit/angular-uzgni7

关于arrays - 如何跨嵌套数组过滤 JSON 对象数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55097240/

相关文章:

javascript - 检查数组是否有用户输入的值

json - 如何在 Go 中通过 http 解码 JSON 检索

ios - 在每个 View Controller 中显示用户名 jsondata

angular - 路由到另一个组件后,服务返回时通知用户

node.js - Angular Universal 与 api 内部快速调用

javascript - 使用 keyof 之类的方法进行 TypeScript 数组类型转换

javascript - 如何在javascript中从回调响应数组中检索值

javascript - 当我们可以直接调用方法时,为什么我们需要在javascript中调用或应用方法?

php - 使用 PHP 和 jSON 从 MySQL 获取 UIImage

Angular 10 匹配器 child 不显示 child