ramda.js - 使用 Ramda 累加对象中的值的总和
问题描述
我有一个这样的对象:
obj = {
'key1': {'prop1': 123,'prop2':345},
'key2': {'prop1': 673,'prop3':642}
}
我想得到以下结果:
result = {'prop1': 796, 'prop2':345, 'prop3':642}
也就是说,我想要一个具有所有属性的对象。我有这样的功能:
Object.values(obj).reduce((acc,currentObj) => {
const props = Object.keys(currentObj);
props.forEach(prop => {
if(prop in acc){
acc[prop] += currentObj[prop]
} else {
acc[prop] = currentObj[prop]
}
})
return acc
}, {})
我相信这很好用,但是有什么方法可以用 RamdaJS 做同样的事情吗?
解决方案
一个简单的 reduce 函数就可以做到这一点。
const fn = R.pipe(
R.values,
R.reduce(R.mergeWith(R.add), {}),
);
//--
const data = {
key1: { prop1: 123, prop2: 345 },
key2: { prop1: 673, prop3: 642 },
};
console.log(
fn(data),
);
<script src="https://cdnjs.cloudflare.com/ajax/libs/ramda/0.26.1/ramda.js" integrity="sha256-xB25ljGZ7K2VXnq087unEnoVhvTosWWtqXB4tAtZmHU=" crossorigin="anonymous"></script>
推荐阅读
- opencv - 是否有可能相同的代码使用openCV返回不同的结果?
- android - android.os.NetworkOnMainThreadException json requete post
- c# - C#,使用计时器触发不同的事件。
- footer - iText 7 - 最后一页的不同页脚 - PdfDictionary 中的空指针
- algorithm - Haskell中的CycleSort - 麻烦
- c# - 使用泛型类型构建查询表达式
- data-mining - R studio中的rand有效性测量
- wpf - 我正在寻找以窗口形式存在的 wpf 中的图形类
- list - 多程序列表理解
- bluetooth - 获取连接到蓝牙 HC-06 和 Arduino 的设备名称