如何解决按名称Ramda分组对象
晚上好,我需要按其昵称对一组对象进行分组,在这里向您展示数据:
[
{
"nickName": "Info2","countNotice": 4
},{
"nickName": "Info2","countAlarm": 1
},{
"nickName": "Info1","countNotice": 2
},"countAlarm": 3
}
]
在这里,我向您展示预期的结果:
[{
"nickName": "Info1","countNotice": 2,"countAlarm": 3
},{
"nickName": "Info1","countAlarm": 1,"countNotice": 4
}]
我尝试在NodeJs中从MongoDB聚合,但这是不可能的。
解决方法
您可以分组,然后合并每个分组的
const res = R.compose(
R.map(R.mergeAll),R.values,R.groupBy(R.prop("nickName"))
)(data)
实时示例
const data = [
{
nickName: "Info2",countNotice: 4,},{
nickName: "Info2",countAlarm: 1,{
nickName: "Info1",countNotice: 2,countAlarm: 3,]
const res = R.compose(
R.map(R.mergeAll),R.groupBy(R.prop("nickName"))
)(data)
console.log(res)
<script src="//cdnjs.cloudflare.com/ajax/libs/ramda/0.25.0/ramda.min.js"></script>
,
使用Array.prototype.reduce
,可以按nickName
对数组元素进行分组。
const input = [
{
"nickName": "Info2","countNotice": 4
},{
"nickName": "Info2","countAlarm": 1
},{
"nickName": "Info1","countNotice": 2
},"countAlarm": 3
}
];
const groupBy = input.reduce((acc,cur) => {
acc[cur.nickName] ? acc[cur.nickName] = {
...acc[cur.nickName],...cur
} : acc[cur.nickName] = cur;
return acc;
},{});
const output = Object.values(groupBy);
console.log(output);
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。