使用Lodash计算并显示每个人的记录数

时间:2016-03-29 20:44:55

标签: javascript arrays object count lodash

我正在使用时间表列表,我希望显示按用户名分组的列表,以及他们提交的表单数量。

我能够接近这样做:

var collectionSorted = _.chain(timesheets)
      .groupBy("UserName")
      .toPairs()
      .sortBy(1)
      .value();

,在记录时,看起来像是一个很好的对,只包含UserName和该用户的时间表数组:

0 : Array[2]
1 : Array[2]
2 : Array[2] ...

在控制台中扩展,它们看起来像:

0 : "Chester Burnett"
1 : Array[4]
[then follows an array of four timesheet objects]
length : 4

我的问题是,我如何计算这些时间表,或使用length:4属性来显示:

Chester Burnett  4

我对Lodash很新,所以解决方案可能很简单或明显,但对我而言,它既不是。

此外,我的问题与Count total with two criterias using Lodash没有什么不同,但该解决方案使用了_.pluck,这在Lodash中不再可用。

(由于这个原因,我发现很多在线Lodash例子很难学习。)

1 个答案:

答案 0 :(得分:1)

如果没有看到原始数据,很难做出任何假设,但现在最简单的事情就是:

_.chain(timesheets)
      .groupBy("UserName")
      .toPairs()
      .sortBy(1)
      .map(function (pair) {
           return [pair[0], pair[1].length];
       })
      .value();

P.S。 lodash中的_.pluck被替换为接受字符串作为参数的_.map。因此,与下划线的_.pluck(array, 'property')进行比较 - 在​​lodash中它是_.map(array, 'property')