如何使用RXJS将数据库数组转换为此



如何使用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},
    ]
  }
];

您可以使用array#reduceobject#keysarray#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);

最新更新