Underscore.js唯一值和属性计数:以及另一个属性:2个级别

时间:2017-02-20 15:23:09

标签: underscore.js

我是Underscore.js的新手

假设我有这个对象数组:

[
    { couponid: 500, locationid: 10 },
    { couponid: 600, locationid: 15 }, 
    { couponid: 500, locationid: 10 }, 
    { couponid: 500, locationid: 20 } 
]

我获得了独特的优惠券(500,600)以及每张优惠券的数量,使用:

_.countBy(result, "couponid") 

其中result是数组。

任何人都可以告诉我,现在我怎么能得到每个独特的优惠券,有多少独特的位置ID(以及locationids)?即,在上面的couponid 500中,计数为2,而couponid 600将计为1。

1 个答案:

答案 0 :(得分:0)

如果我理解正确,我认为这会做你想做的事情:

var result = _.chain(data)
    .groupBy('couponid')
    .mapObject( group => _.countBy(group, 'locationid'))
    .value()

首先,我们按couponid进行分组,然后映射该对象以计算该组中的每个locationid

这将导致一个如下所示的对象:

{
    500: {
       10: 2,
       20: 1
    },

    600: {
       15: 1
    }   
}