JavaScript:提取数据&;按不同属性分组

JavaScript:提取数据&;按不同属性分组,javascript,Javascript,我有一个JavaScript对象数组,看起来像这样 [ { name: "A", tp1: 10, tp2: 20, ... tp31: 30 }, { name: "B", tp1: 11, tp2: 21, ... tp31: 31 }, { name: "C", tp1: 12, tp2: 22, ... tp31: 32 }, { name: "D", tp1: 13, tp2: 23, ... tp31: 33 } ] 我想以稍微不同的方式重新排列数据。现在,你可以说“钥

我有一个JavaScript对象数组,看起来像这样

[ { name: "A", tp1: 10, tp2: 20, ... tp31: 30 },
  { name: "B", tp1: 11, tp2: 21, ... tp31: 31 },
  { name: "C", tp1: 12, tp2: 22, ... tp31: 32 },
  { name: "D", tp1: 13, tp2: 23, ... tp31: 33 } ]
我想以稍微不同的方式重新排列数据。现在,你可以说“钥匙”(可以这么说)就是名字。我希望使用不同的属性(例如
tp1
)对对象进行分组,并将对象中每个“名称”的值作为它们自己的属性输入

我的解释可能很糟糕,但基本上,我想将其转换为以下格式:

[ { x: "tp1" , A: 10, B: 11, C: 12, D: 13 },
  { x: "tp2" , A: 20, B: 21, C: 22, D: 23 },
  ...
  { x: "tp31", A: 30, B: 31, C: 32, D: 33 } ]
我真的不知道从哪里开始

提前谢谢。

让输入=[
{名称:“A”,tp1:10,tp2:20,tp31:30},
{名称:“B”,tp1:11,tp2:21,tp31:31},
{名称:“C”,tp1:12,tp2:22,tp31:32},
{名称:“D”,tp1:13,tp2:23,tp31:33}
];
让output=Object.keys(输入[0])//获取第一个元素的属性
.filter(key=>key!==“name”)/“删除”该“name”属性
.map(键=>{//迭代其余键
返回input.reduce((result,current)=>{//并将其转换为所需格式
结果[current.name]=当前[key];
返回结果;
},{“x”:key});//第一轮.reduce()的“开始”值
});
控制台日志(输出)