Javascript 在1层深度上翻转键值对
我反对:Javascript 在1层深度上翻转键值对,javascript,arrays,object,ecmascript-6,reduce,Javascript,Arrays,Object,Ecmascript 6,Reduce,我反对: const pairs = { A: { D: [1, 2, 3] }, B: { D: [3, 2, 1] }, C: { D: [4, 3, 2, 1], B: [0, 1, 2, 3] } }; 我怎样才能把它翻过来 const fliped = { D: { A: [1, 2, 3], B: [3, 2, 1], C: [4, 3, 2, 1] }, B: { C: [0, 1, 2, 3] } }; ES6解决方案将非常好 我尝试了
const pairs = {
A: { D: [1, 2, 3] },
B: { D: [3, 2, 1] },
C: {
D: [4, 3, 2, 1],
B: [0, 1, 2, 3]
}
};
我怎样才能把它翻过来
const fliped = {
D: { A: [1, 2, 3], B: [3, 2, 1], C: [4, 3, 2, 1] },
B: { C: [0, 1, 2, 3] }
};
ES6解决方案将非常好
我尝试了类似的方法,但发现我不太擅长使用reduce方法,并开始考虑丑陋的命令式解决方案:
Object.entries(pairs).reduce(
(acc, [key1, value]) =>
Object.keys(value).reduce(
(acc, key2) => ({
...acc,
[key2]: { [key1]: value[key2] }
}),
acc
),
{}
);
您可以通过减少对象的条目来采用嵌套方法
const
pairs={A:{D:[1,2,3]},B:{D:[3,2,1]},C:{D:[4,3,2,1],B:[0,1,2,3]},
结果=对象
.参赛作品(双)
.reduce((r[右,对象])=>对象
.条目(对象)
.reduce((r[左,值])=>{
r[左]=r[左]|{};
r[左][右]=值;
返回r;
},r),{});
控制台日志(结果)代码>你试过什么?请展示你的努力,以便人们能够帮助纠正它,而不是为你做一切