2016-09-01 4 views
0

アンダースコアを使用するuserIdに基づくCountbyカテゴリ。Underscorejsを使用するuserID別のカウントカテゴリ

"Technology:2" & "Analytics:1"の値を印刷するスクリプトを参照してください。

期待される答え:技術:1 &「技術」オブジェクトが両方とも同じユーザーIDであるため「Analytics:1」。 1つの

arrayFlatten = [ 
     { 
     area:"Digital", 
     category:"Technology", 
     userId:1, 
     weightedAverage:10 
     }, 
     { 
     area:"Digital", 
     category:"Technology", 
     userId:1, 
     weightedAverage:20 
     }, 
     { 
     area:"Digital", 
     category:"Analytics", 
     userId:2, 
     weightedAverage:30 
     } 
] 
var types = _.groupBy(arrayFlatten, 'category'); 
console.log(types); 
var result = {}; 
_.each(types, function(val, key) { 
    console.log(key+" "+val.length); 
}); 
console.log(result); 

おかげ

+0

これを手伝ってくれる人がいます。 –

+0

あなたの例は理にかなっていません。ユーザー1には2つのテクノロジーがあり、ユーザー2には1つのAnalyticsがあります。私はあなたがあなたが提案する予想される答えにどのように来るのか見ていない –

答えて

0

あなたの例では、意味がありませんが、私はあなたのデータが間違っていると思います。ここにいくつかのコード例があります。私はあなたの質問に予想される答えを提供するためのデータを表すユーザー3を追加しました。

var arrayFlatten = [{ 
    area:"Digital", 
    category:"Technology", 
    userId:1, 
    weightedAverage:10 
},{ 
    area:"Digital", 
    category:"Technology", 
    userId:1, 
    weightedAverage:20 
},{ 
    area:"Digital", 
    category:"Analytics", 
    userId:2, 
    weightedAverage:30 
},{ 
    area:"Digital", 
    category:"Technology", 
    userId:3, 
    weightedAverage:30 
},{ 
    area:"Digital", 
    category:"Analytics", 
    userId:3, 
    weightedAverage:30 
}]; 


function printCategoriesByUserId(userId) { 
    var cats = _.where(arrayFlatten, {userId: userId}); 
    var types = _.groupBy(cats, 'category'); 

    _.each(types, function(val, key) { 
    console.log(key + ": " + val.length); 
    }); 
} 

// prints Techology: 2 
printCategoriesByUserId(1); 

// prints Analytics: 1 
printCategoriesByUserId(2); 

// prints Technology: 1, Analytics: 1 
printCategoriesByUserId(3); 
関連する問題