如何使用Rxjs将我的数据库数组转换为此数组

时间:2018-02-08 13:38:41

标签: javascript arrays 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},
    ]
  }
];

1 个答案:

答案 0 :(得分:0)

您可以使用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);