HTML表上的数据透视表对象

时间:2019-06-18 15:32:57

标签: javascript html angular typescript

我具有以下简化结构:

     [
      {
        "ClientId": 512,
        "ProductId": 7779,
        "Date": "2019-01-01",
        "Quantity": 20.5,
        "Value": 10.5
      },
      {
        "ClientId": 512,
        "ProductId": 7779,
        "Date": "2019-02-01",
        "Quantity": 15.5,
        "Value": 11.2
      },
      ...
    ]

它一直持续到12月,并且一年中的其他月份都有其他ProductsId个。我想要的是“旋转”它,而又不会丢失对象引用,并且看起来像这样:

full-table

我正在使用Angular,感谢它能做的任何帮助。

1 个答案:

答案 0 :(得分:1)

@Shilly的注释使我实现了一个解决方案,使用productId作为键将对象的数组简化为一个对象,添加剩余的值,然后将其重新映射回数组。可能不是最好的,但是有效。

var o = this.products.reduce((prev, cur) => {
  prev[cur.ProductId] = prev[cur.ProductId] || [];
  prev[cur.ProductId].push(cur);
  return prev;
}, {});

this.valueWithMonths = Object.keys(o).map((k) => {
  return { productId: +k, values: o[k] };
});