在数组中收集具有相同id的数组,并创建具有id的新数组,并命名为javascript
我有一个包含数组的JSON,我想结合Premissions和WorkComponents数组中具有相同facility id的facility数组,并创建一个新数组,其中包含facility id和preq_类型,wc_类型用逗号分隔,如果它具有相同的facility id,我可以在javascripts中做什么?谢谢 预期结果:在数组中收集具有相同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
{
"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"]
}
]