【发布时间】:2016-07-18 18:00:16
【问题描述】:
我看到summing value in an array of maps 并想知道在 jq 中是否有一种优雅的方式来对一组对象执行一般递归并将它们包含的所有值相加以生成单个输出对象作为所有其他对象的总和。
如果在包含所有其他对象的单个输入对象上执行此操作更容易(以避免啜饮),那也很好。
- 递归一系列具有大量任意嵌套的独立对象(在某种意义上是任意的,如果通用递归可以做我想要的,我不想为对象层次结构的细节编写 jq ) 和
- 对在任何级别找到的键值对的每个数值求和
每个对象都可以是稀疏的,但所有重合的对象键路径应该将它们的值相加到单个输出对象层次结构中的相同位置。
例如(如果这样更容易,围绕这 3 个对象包装一个数组):
{ A { B { x:1, y:4 }, C { x:3, z:6 }, t:2 }, s:5 }
{ A { B { x:2 , z:3 }, t:1 } }
{ A { , C { y:3, z:2 } }, s:3 }
会产生
{ A { B { x:3, y:4, z:3 }, C { x:3, y:3, z:8 }, t:3 }, s:8 }
【问题讨论】: