首页 > 解决方案 > HTML表格上的透视对象

问题描述

我有以下简化结构:

     [
      {
        "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
      },
      ...
    ]

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

全桌

我正在使用 Angular,它可以提供的任何帮助都将不胜感激。

标签: javascripthtmlangulartypescript

解决方案


@Shilly评论让我意识到了一个解决方案,将对象数组减少为使用productIds 作为键的对象,添加剩余的值,然后再次将其映射回数组。可能不是最好的,但有效。

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] };
});

推荐阅读