Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/377.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/.htaccess/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
JavaScript数组过滤嵌入式对象数组_Javascript_Arrays_Filter - Fatal编程技术网

JavaScript数组过滤嵌入式对象数组

JavaScript数组过滤嵌入式对象数组,javascript,arrays,filter,Javascript,Arrays,Filter,如何过滤嵌入对象数组的数组? 我使用过滤器和一些,但结果不是我的想法 var data = [ { "app": "mail", "scenarios": [ { "name": "", "description": "plugin 1", "contacts": [ { "resourceId": "001", "isPrimary": false

如何过滤嵌入对象数组的数组? 我使用过滤器和一些,但结果不是我的想法

var data = [
  {
    "app": "mail",
    "scenarios": [
      {
        "name": "",
        "description": "plugin 1",
        "contacts": [
          {
            "resourceId": "001",
            "isPrimary": false
          }
        ]
      },
      {
        "name": "app2",
        "description": "plugin 2",
        "contacts": [
          {
            "resourceId": "002",
            "isPrimary": false
          }
        ]
      }
    ]
  },
  {
    "app": "mail2",
    "scenarios": [
      {
        "name": "app1",
        "description": "plugin 1",
        "contacts": [
          {
            "resourceId": "001",
            "isPrimary": false
          }
        ]
      },
      {
        "name": "app2",
        "description": "plugin 2",
        "contacts": [
          {
            "resourceId": "002",
            "isPrimary": false
          }
        ]
      }
    ]
  }
];

result = data.filter(app => app.scenarios.some(scenario => scenario.contacts.some(concact => concact.resourceId == '001')));
我想将数据过滤到

[
  {
    "app": "mail",
    "scenarios": [
      {
        "name": "",
        "description": "plugin 1",
        "contacts": [
          {
            "resourceId": "001",
            "isPrimary": false
          }
        ]
      }
    ]
  },
  {
    "app": "mail2",
    "scenarios": [
      {
        "name": "app1",
        "description": "plugin 1",
        "contacts": [
          {
            "resourceId": "001",
            "isPrimary": false
          }
        ]
      }
    ]
  }
]
var数据=[{app:mail,场景:[{name:,描述:插件1,联系人:[{resourceId:001,isPrimary:false}]},{name:app2,描述:插件2,联系人:[{{resourceId:002,isPrimary:false}]}},{app:mail2,场景:[{name:app1,描述:插件1,联系人:[{resourceId:001,isPrimary:false}]}},{name:app2,描述:插件2,联系人:[{resourceId:002,isPrimary:false}]}]}; 结果=data.filterapp=>app.scenarios.somescenario=>scenario.contacts.someconact=>conact.resourceId=='001'; console.logresult; 风险值数据=[ { 应用程序:mail, 场景:[ { 姓名:, 说明:插件1, 联系人:[ { 资源ID:001, 一级:假 } ] }, { 名称:app2,, 说明:插件2, 联系人:[ { 资源ID:002, 一级:假 } ] } ] }, { app:mail2, 场景:[ { 名称:app1,, 说明:插件1, 联系人:[ { 资源ID:001, 一级:假 } ] }, { 名称:app2,, 说明:插件2, 联系人:[ { 资源ID:002, 一级:假 } ] } ] } ]; data.forEachdat=>{ dat.scenarios=dat.scenarios.findda=>da.contacts.findx=>x.resourceId==001; };
console.logdata我认为您需要同时过滤场景数组和联系人数组。如果您希望获得一个场景,其中至少有一个联系人的resourceId==001,您可以执行以下操作

让数据=[ { 应用程序:mail, 场景:[ { 姓名:, 说明:插件1, 联系人:[ { 资源ID:001, 一级:假 } ] }, { 名称:app2,, 说明:插件2, 联系人:[ { 资源ID:002, 一级:假 } ] } ] }, { app:mail2, 场景:[ { 名称:app1,, 说明:插件1, 联系人:[ { 资源ID:001, 一级:假 } ] }, { 名称:app2,, 说明:插件2, 联系人:[ { 资源ID:002, 一级:假 } ] } ] } ]; forlet数据项{ item.scenarios=item.scenarios.filtervalue=>{ 让validContacts=value.contacts.filtercontact=>{ return contact.resourceId==001; } 返回validContacts.length>0; } }
console.logdata;这是可行的,但联系人可能是一个对象数组,因此使用da.contacts[0]我认为不适合这种情况。@user3206091:已更新,请检查,基本上不使用索引0,而是对其应用查找函数