Javascript 反向填充对象

Javascript 反向填充对象,javascript,arrays,typescript,javascript-objects,Javascript,Arrays,Typescript,Javascript Objects,因此,我尝试构建一个函数,该函数可以重建一个对象并以受人尊敬的方式返回,例如: 当前对象: { "child1": { "value": "firstvalue", "Key": "ID1" }, "child2": { "value": "secondvalue", "Key": "ID2" }, "child3": { "value": "thirdvalue", "Key": "ID1"

因此,我尝试构建一个函数,该函数可以重建一个对象并以受人尊敬的方式返回,例如:

当前对象:

{
    "child1": {
        "value": "firstvalue", "Key": "ID1"
    },
    "child2":
    {
        "value": "secondvalue", "Key": "ID2"
    },
    "child3":
    {
        "value": "thirdvalue", "Key": "ID1"
    },
}
预期对象:

{
    "ID1": {
        "child1": "first value",
        "child3": "third value", 
    },
    "ID2": {
        "child2": "third value",
    },
}

有什么干净的方法吗?或者我必须把它推到阵列中?我尝试将其推入数组,然后对其进行组织,但每当我尝试将具有相同“ID1”的对象推入数组时,它都会将其替换,尝试使用reduce和concat将其推入数组,但仍然没有找到答案,谢谢帮助

是的,很有可能:

const obj={
“儿童1”:{
“值”:“第一个值”,“键”:“ID1”
},
“儿童2”:
{
“值”:“第二个值”,“键”:“ID2”
},
“儿童3”:
{
“值”:“第三个值”,“键”:“ID1”
},
};
const result=Object.entries(obj)//获取源对象中的所有键/值对。
.reduce((结果,[子项,数据])=>{
result[data.Key]=result[data.Key]| |{};//确保result[data.Key]是一个对象。
结果[data.Key][child]=data.value;//将当前条目的值分配给对象。
返回结果;
}, {});

console.log(结果)
是的,很有可能:

const obj={
“儿童1”:{
“值”:“第一个值”,“键”:“ID1”
},
“儿童2”:
{
“值”:“第二个值”,“键”:“ID2”
},
“儿童3”:
{
“值”:“第三个值”,“键”:“ID1”
},
};
const result=Object.entries(obj)//获取源对象中的所有键/值对。
.reduce((结果,[子项,数据])=>{
result[data.Key]=result[data.Key]| |{};//确保result[data.Key]是一个对象。
结果[data.Key][child]=data.value;//将当前条目的值分配给对象。
返回结果;
}, {});

console.log(result)
使用
forEach
并使用唯一键构建对象

const reverse=data=>{
常数res={};
Object.entries(data.forEach)(
([child,obj])=>
(res[obj.Key]=Object.assign(res[obj.Key]| |{},{[child]:obj.value}))
);
返回res;
};
常数数据={
儿童1:{
值:“第一个值”,
键:“ID1”
},
儿童2:{
值:“第二个值”,
关键字:“ID2”
},
儿童3:{
价值:“第三价值”,
键:“ID1”
}
};

console.log(反向(数据))使用
forEach
并使用唯一键构建对象

const reverse=data=>{
常数res={};
Object.entries(data.forEach)(
([child,obj])=>
(res[obj.Key]=Object.assign(res[obj.Key]| |{},{[child]:obj.value}))
);
返回res;
};
常数数据={
儿童1:{
值:“第一个值”,
键:“ID1”
},
儿童2:{
值:“第二个值”,
关键字:“ID2”
},
儿童3:{
价值:“第三价值”,
键:“ID1”
}
};
console.log(反向(数据))