如何使用Rxjs将我的数据库数组转换为此数组。我需要分组键
[
{ date: 'mydate',
exam: {
hb: 10,
ht: 30,
plq: 250,
cr: 1.2
}},
{ date: 'mydate1',
exam: {
hb: 13,
tap: 1,
plq: 210,
ck: 300
}}
];
到此(我需要按考试的每个键分组,并将多个值与它们的日期分开):
[
{
exam: 'hb',
regs: [
{date: 'mydate1', value: 10},
{date: 'mydate2', value: 13}
]
},
{
exam: 'ht',
regs: [
{data: 'mydate1', value: 30},
]
},
{
exam: 'plq',
regs: [
{date: 'mydate1', value: 250},
{date: 'mydate2', value: 210},
]
}
];
答案 0 :(得分:0)
您可以使用array#reduce
,object#keys
和array#forEach
。遍历您的数组并为exam
中的所有键创建一个对象以及数组中的重复键推送值。然后使用Object.values()
var data = [ { date: 'mydate', exam: { hb: 10, ht: 30, plq: 250, cr: 1.2 }}, { date: 'mydate1', exam: { hb: 13, tap: 1, plq: 210, ck: 300 }} ],
result = Object.values(data.reduce((r,{date, exam}) => {
Object.keys(exam).forEach(k => {
r[k] = r[k] || {exam : k , regs : []};
r[k].regs.push({date, value: exam[k]})
});
return r;
},{}));
console.log(result);