Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 在1层深度上翻转键值对_Javascript_Arrays_Object_Ecmascript 6_Reduce - Fatal编程技术网

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),{});

控制台日志(结果)你试过什么?请展示你的努力,以便人们能够帮助纠正它,而不是为你做一切