javascript - 将一个对象的属性包装到另一个对象 - JavaScript
问题描述
我可以知道是否使用reduce
我可以实现以下属性,其中activatedItems
和的属性quarterItems
包含在一个对象中,即modules
.
{
"isExternalVisitor": false,
"modules": [
{
"moduleId": "e569da0e-44e6-4f75-96c4-bdd888678abd",
"code": "NEWQ2/SITENAME/2021-Q3-1",
"siteId": "10babdbe-5346-43e8-932a-4c7ae54dcb1b",
"activatedId": "2e03c658-3bbd-4332-bb1b-14fe56c7e753"
},
{
"moduleId": "588905b4-2c1d-49bf-a71f-84210405bc94",
"code": "NEWQ1/SITENAME/2021-Q1-2",
"siteId": "10babdbe-5346-43e8-932a-4c7ae54dcb1b",
"activatedId": "6c1691d2-7c37-4888-a446-9219fa9b9014"
}
],
"activatedItems": [
{
"activatedId": "2e03c658-3bbd-4332-bb1b-14fe56c7e753",
"stQuarterId": "b36d7e23-15e5-4f97-b52e-65757de4b264"
},
{
"activatedId": "6c1691d2-7c37-4888-a446-9219fa9b9014",
"stQuarterId": "01000f98-6470-440a-a833-95b199ab1f7a"
}
],
"quarterItems": [
{
"id": "b36d7e23-15e5-4f97-b52e-65757de4b264",
"checklistId": "8b479656-8cde-4bff-9c51-d5eca369bc76",
"fullName": "dsad",
"year": "2021-01-01T00:00:00",
"quarter": "2021-Q3",
"versions": 1
},
{
"id": "01000f98-6470-440a-a833-95b199ab1f7a",
"checklistId": "039f2584-1ca5-4ee3-b46f-cdf1887af7f6",
"fullName": "NEWQ1",
"year": "2021-01-01T00:00:00",
"quarter": "2021-Q1",
"versions": 2
}
]
}
这是只有一个对象获得所有数据的预期结果。
{
"isExternalVisitor": false,
"modules": [
{
"moduleId": "e569da0e-44e6-4f75-96c4-bdd888678abd",
"code": "NEWQ2/SITENAME/2021-Q3-1",
"siteId": "10babdbe-5346-43e8-932a-4c7ae54dcb1b",
"activatedId": "2e03c658-3bbd-4332-bb1b-14fe56c7e753",
"stQuarterId": "b36d7e23-15e5-4f97-b52e-65757de4b264",
"checklistId": "8b479656-8cde-4bff-9c51-d5eca369bc76",
"fullName": "dsad",
"year": "2021-01-01T00:00:00",
"quarter": "2021-Q3",
"versions": 1
},
{
"moduleId": "588905b4-2c1d-49bf-a71f-84210405bc94",
"code": "NEWQ1/SITENAME/2021-Q1-2",
"siteId": "10babdbe-5346-43e8-932a-4c7ae54dcb1b",
"activatedId": "6c1691d2-7c37-4888-a446-9219fa9b9014",
"stQuarterId": "01000f98-6470-440a-a833-95b199ab1f7a",
"checklistId": "039f2584-1ca5-4ee3-b46f-cdf1887af7f6",
"fullName": "NEWQ1",
"year": "2021-01-01T00:00:00",
"quarter": "2021-Q1",
"versions": 2
}
]
}
我尝试了以下并能够将它们合并到一个数组中,但是,最终结果与上面不同。您的帮助将不胜感激。
let modules = arr.modules;
let activatedItems = arr.activatedItems;
let quarterItems = arr.quarterItems;
let finalArr = [];
modules.forEach(module => {
activatedItems.forEach(item =>{
if(item.activatedId == module.activatedId)
{
quarterItems.forEach(quaItem => {
if(quaItem.id == item.stQuarterId){
finalArr.push(module);
finalArr.push(item);
finalArr.push(quaItem);
}
})
}
})
})
解决方案
看来您只是在索引上加入数组。如果是这样的话,一个简单的map
就可以了!只需映射modules
并使用index
映射回调函数从其他数组中获取相应的对象。
const obj={isExternalVisitor:!1,modules:[{moduleId:"e569da0e-44e6-4f75-96c4-bdd888678abd",code:"NEWQ2/SITENAME/2021-Q3-1",siteId:"10babdbe-5346-43e8-932a-4c7ae54dcb1b",activatedId:"2e03c658-3bbd-4332-bb1b-14fe56c7e753"},{moduleId:"588905b4-2c1d-49bf-a71f-84210405bc94",code:"NEWQ1/SITENAME/2021-Q1-2",siteId:"10babdbe-5346-43e8-932a-4c7ae54dcb1b",activatedId:"6c1691d2-7c37-4888-a446-9219fa9b9014"}],activatedItems:[{activatedId:"2e03c658-3bbd-4332-bb1b-14fe56c7e753",stQuarterId:"b36d7e23-15e5-4f97-b52e-65757de4b264"},{activatedId:"6c1691d2-7c37-4888-a446-9219fa9b9014",stQuarterId:"01000f98-6470-440a-a833-95b199ab1f7a"}],quarterItems:[{id:"b36d7e23-15e5-4f97-b52e-65757de4b264",checklistId:"8b479656-8cde-4bff-9c51-d5eca369bc76",fullName:"dsad",year:"2021-01-01T00:00:00",quarter:"2021-Q3",versions:1},{id:"01000f98-6470-440a-a833-95b199ab1f7a",checklistId:"039f2584-1ca5-4ee3-b46f-cdf1887af7f6",fullName:"NEWQ1",year:"2021-01-01T00:00:00",quarter:"2021-Q1",versions:2}]};
const result = {
isExternalId: obj.isExternalId
};
result.modules = obj.modules.map((el, i) => ({
...el,
...obj.activatedItems[i],
...obj.quarterItems[i]
}));
console.log(result);
推荐阅读
- java - 在 Java 中限制类的访问
- amazon-web-services - CloudWatch 代理错误日志 - 指标未显示在控制台中
- laravel - 如何将查询转换为 eloquent
- python - 在 Python 中替换 Matlab 的 fntlr 函数
- python - Python ldap3如何使用Reader进行分页
- flutter - 带有内部系统音频的 Flutter 屏幕录像机
- reactjs - 测试 onclick 功能在反应中不起作用。返回无法读取未定义的属性“_isMockFunction”
- python - Lifelines logrank p 与 KM-plotter 不匹配
- go - 如何将断言临时结构键入具体结构
- react-native - 单击时如何更改文本输入下划线的颜色?