在数组中收集具有相同id的数组,并创建具有id的新数组,并命名为javascript

在数组中收集具有相同id的数组,并创建具有id的新数组,并命名为javascript,javascript,arrays,combinations,Javascript,Arrays,Combinations,我有一个包含数组的JSON,我想结合Premissions和WorkComponents数组中具有相同facility id的facility数组,并创建一个新数组,其中包含facility id和preq_类型,wc_类型用逗号分隔,如果它具有相同的facility id,我可以在javascripts中做什么?谢谢 预期结果: { "workRequestCompleted":[ { "number":"4329502", "nam

我有一个包含数组的JSON,我想结合Premissions和WorkComponents数组中具有相同facility id的facility数组,并创建一个新数组,其中包含facility id和preq_类型,wc_类型用逗号分隔,如果它具有相同的facility id,我可以在javascripts中做什么?谢谢

预期结果:

{ 
   "workRequestCompleted":[ 
      { 
         "number":"4329502",
         "name":"Scheduled Outage Primary Feeder",
         "startDate":"2019-07-01",
         "endDate":"2019-07-10",
         "lastUpdate":"2019-12-01T05:00:00Z",
         "contractId":null,
         "status":"Scheduled"
      }
   ],
   "prerequisites":[ 
      { 
         "preq_id":"M12345",
         "preq_type":"FLAG",
         "preq_date_time":"2019-10-02T03:28:00Z",
         "preq_last_update":"2018-12-03T13:30:00Z",
         "preq_crew_id_id":"W_FOD_013",
         "wr_number":"4329502",
         "preq_crew":{ 
            "crew_id":"W_FOD_013",
            "crew_name":"Pre-req 1",
            "expertise":"Flush"
         },
         "facilities":[ 
            { 
               "facility_id":"VS1234",
               "facility_type":"VAULT",
               "facility_lat":40.758896,
               "facility_long":-73.98513,
               "facility_notes":"Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua."
            }
         ]
      }
   ],
   "workComponents":[ 
      { 
         "wc_number":"888-FOD-CO-950-609",
         "wc_type":"PSMECH",
         "wc_description":"Make halves, pick up VS1234.",
         "wc_crew_id":"W_FOD_013",
         "wc_start_date_time":null,
         "wc_end_date_time":null,
         "wc_estimated_hours":10.0,
         "wc_scheduled_start_date_time":"2020-02-16T19:23:02.866019Z",
         "wc_scheduled_end_date_time":"2020-02-17T19:23:02.866028Z",
         "wc_actual_hours":0.0,
         "wc_status":"Scheduled",
         "wc_notes":null,
         "wc_number_pre":"888-FOD-CO-178-0",
         "wc_number_post":"",
         "delay_type":null,
         "wr_number":"4329502",
         "wc_crew":{ 
            "crew_id":"W_FOD_013",
            "crew_name":"Pre-req 1",
            "expertise":"Flush"
         },
         "facilities":[ 
            { 
               "facility_id":"VS1234",
               "facility_type":"VAULT",
               "facility_lat":40.758896,
               "facility_long":-73.98513,
               "facility_notes":"Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua."
            }
         ]
      },
      { 
         "wc_number":"888-FOD-CO-178-0",
         "wc_type":"PSMECH",
         "wc_description":"Make halves, pick up VS1234.",
         "wc_crew_id":"W_FOD_013",
         "wc_start_date_time":"2019-12-02T04:28:00Z",
         "wc_end_date_time":"2019-12-03T13:30:00Z",
         "wc_estimated_hours":10.0,
         "wc_scheduled_start_date_time":null,
         "wc_scheduled_end_date_time":null,
         "wc_actual_hours":10.0,
         "wc_status":"Pending\n",
         "wc_notes":"We noticed that VS5678 may require additional maintenance soon.",
         "wc_number_pre":"",
         "wc_number_post":"",
         "delay_type":"",
         "wr_number":"4329502",
         "wc_crew":{ 
            "crew_id":"W_FOD_013",
            "crew_name":"Pre-req 1",
            "expertise":"Flush"
         },
         "facilities":[ 
            { 
               "facility_id":"VS1234",
               "facility_type":"VAULT",
               "facility_lat":40.758896,
               "facility_long":-73.98513,
               "facility_notes":"Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua."
            }
         ]
      }
   ]
} 
可以使用多个forEach循环并构建一个对象

常数数据={ 已完成的工作请求:[ { 电话:4329502, 名称:计划大修主馈线, 起始日期:2019-07-01, 截止日期:2019-07-10, 最新更新:2019-12-01T05:00:00Z, 收缩:空, 状态:预定 } ], 先决条件:[ { 预审编号:M12345, preq_类型:标志, 预审日期时间:2019-10-02T03:28:00Z, 发布时间:2018-12-03T13:30:00Z, 预备船员身份证:W\U FOD\U 013, wr_编号:4329502, 预审小组成员:{ 船员编号:W_FOD_013, 机组名称:预需求1, 专长:同花顺 }, 设施:[ { 设施id:VS1234, 设施类型:保险库, 贷款利率:40.758896, 设施长:-73.98513, 设施注释: 知识是一种美德,是一种美德,是一种美德,是一种美德。 } ] } ], 工作组件:[ { wc_编号:888-FOD-CO-950-609, wc_类型:PSMECH, wc_说明:分成两半,拾取VS1234。, wc_乘员识别号:W_FOD_013, wc\u开始日期\u时间:空, wc\u结束\u日期\u时间:空, 预计工作时间:10.0小时, wc计划开始日期时间:2020-02-16T19:23:02.866019Z, wc计划结束日期时间:2020-02-17T19:23:02.866028Z, wc_实际_小时数:0.0, wc_状态:已计划, wc_注释:空, 厕所编号:888-FOD-CO-178-0, wc_编号_职位:, 延迟类型:null, wr_编号:4329502, 工作人员:{ 船员编号:W_FOD_013, 机组名称:预需求1, 专长:同花顺 }, 设施:[ { 设施id:VS1234, 设施类型:保险库, 贷款利率:40.758896, 设施长:-73.98513, 设施注释: 知识是一种美德,是一种美德,是一种美德,是一种美德。 } ] }, { wc_编号:888-FOD-CO-178-0, wc_类型:PSMECH, wc_说明:分成两半,拾取VS1234。, wc_乘员识别号:W_FOD_013, wc开始日期时间:2019-12-02T04:28:00Z, wc结束日期时间:2019-12-03T13:30:00Z, 预计工作时间:10.0小时, wc\u计划的\u开始日期\u时间:空, wc\u计划的\u结束日期\u时间:空, wc_实际_小时数:10.0, wc_状态:挂起\n, wc_注: 我们注意到VS5678可能很快需要额外维护。, wc_编号_前:, wc_编号_职位:, 延迟类型:, wr_编号:4329502, 工作人员:{ 船员编号:W_FOD_013, 机组名称:预需求1, 专长:同花顺 }, 设施:[ { 设施id:VS1234, 设施类型:保险库, 贷款利率:40.758896, 设施长:-73.98513, 设施注释: 知识是一种美德,是一种美德,是一种美德,是一种美德。 } ] } ] }; 常数res={}; data.preditions.forEachpre=>{ pre.facilities.forEachfac=>{ 资源[工厂设备id]= 工厂设备id(单位:res) ? { …res[fac.facility_id], 类型:[资源[fac.facility\u id]。类型,pre.preq\u类型] } :{facility_id:fac.facility_id,type:[pre.preq_type]}; }; }; data.workComponents.forEachwork=>{ work.facilities.forEachfac=>{ 资源[工厂设备id]= 工厂设备id(单位:res) ? { …res[fac.facility_id], 类型:[资源[fac.facility\u id].类型,工作.wc\u类型] } :{facility_id:fac.facility_id,type:[work.wc_type]}; }; }; const required_data=Object.values;
console.logu所需的数据;你粘贴的JSON不可读,你可以用它来格式化你的数据,你还应该提供一个较短版本的JSON,这将有助于人们理解你的问题,也不是我否决了你的问题:
[
        {
            "facility_id": "VS1234",
            "type": ["FLAG", "PSMECH", "PSMECH"]
        }
]