Javascript 下划线sortBy、groupBy和分组数组计数
我在使用下划线操作对象数组时遇到了一些问题。我就快到了,但我一直在尝试在下划线链中组合countBy 我有以下对象数组(简化): 我的目标是只返回每个线程中的最新消息(由messageHeaderId标识),以及线程中作为新对象数组的消息数 因此,从上面的数组中,这将生成一个由2个对象组成的数组,该数组在groupBy方法之后具有每个组中消息数的count属性,并作为属性添加到返回的最新消息中 这是我用来对数组进行排序和分组的方法(我不确定使用2个map函数是否是一个好主意(?),但这是我成功做到这一点的唯一方法): 这会将线程中的最新消息作为新的对象数组提供给我,而我只是缺少count属性。我尝试了各种u.countBy的组合,只是不知道如何将其放入返回的数组中Javascript 下划线sortBy、groupBy和分组数组计数,javascript,arrays,underscore.js,Javascript,Arrays,Underscore.js,我在使用下划线操作对象数组时遇到了一些问题。我就快到了,但我一直在尝试在下划线链中组合countBy 我有以下对象数组(简化): 我的目标是只返回每个线程中的最新消息(由messageHeaderId标识),以及线程中作为新对象数组的消息数 因此,从上面的数组中,这将生成一个由2个对象组成的数组,该数组在groupBy方法之后具有每个组中消息数的count属性,并作为属性添加到返回的最新消息中 这是我用来对数组进行排序和分组的方法(我不确定使用2个map函数是否是一个好主意(?),但这是我成功做
我在这里用上面的代码创建了一个jsfiddle:您需要在
groupBy
之后,但在第一个映射完成之前设置计数,因为在该映射中您只返回一条记录
我修改了小提琴:
以下是相关的变化:
var selectedMessages = _.chain(messages)
.sortBy('dateOfMessage')
.reverse()
.groupBy('messageHeaderId')
.map(function(a) {
// since returning only a[0], assign a new property 'count' with the size of the array
a[0]['count'] = _.size(a);
return a[0];
})
.map(function(b){...})
.value();
您需要在groupBy
之后,但在第一个映射完成之前设置计数,因为在该映射中,您只返回一条记录
我修改了小提琴:
以下是相关的变化:
var selectedMessages = _.chain(messages)
.sortBy('dateOfMessage')
.reverse()
.groupBy('messageHeaderId')
.map(function(a) {
// since returning only a[0], assign a new property 'count' with the size of the array
a[0]['count'] = _.size(a);
return a[0];
})
.map(function(b){...})
.value();
var selectedMessages = _.chain(messages)
.sortBy('dateOfMessage')
.reverse()
.groupBy('messageHeaderId')
.map(function(a) {
// since returning only a[0], assign a new property 'count' with the size of the array
a[0]['count'] = _.size(a);
return a[0];
})
.map(function(b){...})
.value();