2017-02-20 25 views
0

Я новичок в Underscore.jsUnderscore.js уникальные ценности и отсчеты свойства: Alongwith другое свойство .: 2 уровней

Предположим, что у меня есть этот массив объектов:

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

я получил уникальный couponids (500,600), а также отсчетов для каждого couponid, используя:

_.countBy(result, "couponid") 

, где результатом является массив.

Может ли кто-нибудь рассказать, как я могу получить для каждого уникального купона, сколько уникальных идентификаторов местоположения (наряду с идентификаторами местоположения)? т.е. в выше couponid 500 будет иметь счет 2 и couponid 600 будет иметь COUNT 1.

ответ

0

Если я вас правильно понял, я думаю, что это будет делать то, что вы хотите:

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

Сначала мы группу по couponid а затем сопоставить этот объект для подсчета каждого locationid внутри этой группы.

Это приведет к объекту, который выглядит следующим образом:

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

    600: { 
     15: 1 
    } 
} 
+0

Да это то, что я искал. Раньше, с _.countBy (результат, «couponid»), я получал уникальные идентификаторы купонов с их счетами. (Это генерирует данные для диаграммы Highcharts) Теперь для определения местоположения я нуждался в этом. Любой, кто читает это, более ранняя строка _.countBy (результат, «couponid») также получил ответ от Gruff по другому вопросу StackOverflow. – Bhargava