2014-02-16 24 views
0

我按照創建基於計數的隨機數的陣列的方法(參見Fiddle如何使用下劃線從其他列表中創建具有重複次數的對象列表?

$scope.generateRandomData = function(min, max, count){ 
     var out = _(count).times(function(n){return _.random(min, max)}); 
     return out; 
    } 

進出口新在underscorejs和我不知道是否可以從隨機列表,其中每個元素代表valuecount輕鬆地創建新的列表的重複。

例如,如果我有:

輸入

[1,4,2,3,4,4,1,4] 

期望輸出

[ 
    {value: 1, count: 2}, 
    {value: 2, count: 1}, 
    {value: 3, count: 1}, 
    {value: 4, count: 4} 
] 

感謝,

回答

2

嘗試:

var randList = _(count).times(function(n){return _.random(min, max)}); 

var out = _.chain(randList).countBy().pairs().value(); 

見演示Fiddle

countBy: 排序的列表進行分組,並返回一個計數爲每個組中的對象 的數目。

: 將一個對象轉換爲[key, value]對的列表。

它應該返回第一個值爲value,第二個的對象列表:frequency

該運行後:

var out2 = _.map(out, function(value){ 
     return {'value':value[0], 'count':value[1]}; 
    }); 

輸入:

[1, 1, 2, 1, 0, 0, 2, 2, 1, 2] 

輸出:

[ 
    { 
    "value": "0", 
    "count": 2 
    }, 
    { 
    "value": "1", 
    "count": 7 
    }, 
    { 
    "value": "2", 
    "count": 1 
    } 
] 
相關問題