我需要通过Merge/flatten an array of arrays in JavaScript?链接。但是通过该链接和许多其他链接显示了两个数组的合并。我所拥有的如下

[
   {
      "setter":[
         {
            "keyname":"Sample Size",
            "cond":"=",
            "value":1
         }
      ]
   },
   {
      "setter":[
         {
            "joinedcond":"and"
         },
         {
            "keyname":"Sample Size",
            "cond":"=",
            "value":2
         }
      ]
   }
]

那就是我有一个数组,并且在该数组内有一个数组“setter”。
我想要的实际上是将所有setter数组合并为一个数组。话虽这么说,合并应该产生以下输出
[
   {
      "setter":[
         {
            "keyname":"Sample Size",
            "cond":"=",
            "value":1
         },
         {
            "joinedcond":"and"
         },
         {
            "keyname":"Sample Size",
            "cond":"=",
            "value":2
         }
      ]
   }
]

帮助将不胜感激。谢谢

最佳答案

您可以使用Array#reduce完成

var arr = [{"setter":[{"keyname":"Sample Size","cond":"=","value":1}]},{"setter":[{"joinedcond":"and"},{"keyname":"Sample Size","cond":"=","value":2}]}];

var finalArr = arr.reduce((a,x)=>{
  (a[0].setter = a[0].setter || []).push(...x.setter);
  return a;
},[{}]);

console.log(finalArr);
.as-console-wrapper { max-height: 100% !important; top: 0; }

10-01 20:52
查看更多