我遵循的方法是根据计数创建随机数组(参见Fiddle)
$scope.generateRandomData = function(min, max, count){
var out = _(count).times(function(n){return _.random(min, max)});
return out;
}
我是underscorejs
中的新人,我想知道我是否可以轻松地从随机列表新列表中创建每个元素代表重复的value
和count
。
例如,如果我有:
输入
[1,4,2,3,4,4,1,4]
预期输出
[
{value: 1, count: 2},
{value: 2, count: 1},
{value: 3, count: 1},
{value: 4, count: 4}
]
谢谢,
答案 0 :(得分: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
}
]