javascript - 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,它可以提供的任何帮助都将不胜感激。
解决方案
@Shilly评论让我意识到了一个解决方案,将对象数组减少为使用productId
s 作为键的对象,添加剩余的值,然后再次将其映射回数组。可能不是最好的,但有效。
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] };
});
推荐阅读
- excel - 带有 SUM 的 Excel 嵌套公式
- flutter - 颤振:类型'_InternalLinkedHashMap
' 不是类型 'BuildContext' 的子类型 - javascript - 未捕获的类型错误:无法在“节点”上执行“removeChild”:参数 1 不是“节点”类型
- .net - 使用 Novell.Directory 进行虚拟列表视图 Active Directory 搜索会引发 LdapException:不可用的严重扩展
- django - 如何获取django模型实例的最小值
- kubernetes - istio:将 istiogateway 上的 envoyfilter 升级为新语法
- c - 为什么通过套接字发送图片文件时字节数不同?
- javascript - 错误 [ERR_STREAM_WRITE_AFTER_END]:结束后写入
- ios - FirebaseAuth 期间 iOS 项目复制崩溃
- mysql - MySQL get_lock('test_lock', 0) always returns 1