Javascript集成下划线和groupBy

时间:2016-07-05 18:27:15

标签: javascript node.js underscore.js momentjs

我是所有事情Javascript的新手,所以我正在进行一点node.js

我目前正在使用某些第三方APIs并操纵数据。

我偶然发现underscore帮助我解决这个问题,因为返回的数据包含多个objects

我使用zip函数将两个单独arrays的值配对,如下所示。

[ '2016-06-28 18:48', '455102464' ],
[ '2016-06-28 18:53', '234782720' ],
[ '2016-06-28 18:58', '338894848' ],
[ '2016-06-28 19:03', '301309952' ]

在研究zip时,我也注意到了一个名为groupBy的函数。我的目标是减少记录数量并将值分组为1天,而不是在同一天记录多个记录。

我试图实施以下但不能利用。

var groups = _.groupBy(valueArr, function() {
    return moment().format("YYYY-MM-DD");
});

任何反馈意见都会非常感谢我概述我做错了什么!

1 个答案:

答案 0 :(得分:1)

如果输入是一个数组数组(由zip生成),那么groupBy iteratee应该期望一个数组参数。

var arrayOfArrays = [ [ '2016-06-28 18:48', '455102464' ],
                      [ '2016-06-28 18:53', '234782720' ], // etc
_.groupBy(arrayOfArrays, function(array) {
    var dateString = array[0];
    // extract the day from date and return that day
    var date = moment(dateString, 'YYYY/MM/DD');
    return date.format('D');
});

这将产生:

{ 6: [ [ '2016-06-28 18:48', '455102464' ], [ '2016-06-28 18:53', '234782720' ] ],
  N: [ pairs with first element date on the Nth day of the month ], etc

您可能实际上想要分组一年中的某一天,而不是一个月中的某一天,但是一旦您有一个常规日期对象,您就应该在路上了。