尝试使用下划线库编写更多功能性javascript。关于如何改进这个功能而不是命令式的任何想法?
每对中的第一个是"桶"第二个是值,我想迭代信息并得到每个桶中的唯一列表。
var a = [
['A',1],
['A',1],
['A',1],
['A',2],
['B',1],
['B',2],
['B',2],
['B',4],
['C',6],
['D',5]
];
//result should be:
// {
// A: [1,2],
// B: [1,2,4],
// C: [6],
// D: [5]
// }
_.chain(a)
.groupBy(function (pair) {
var group = pair[0];
return group;
})
.mapObject(function (val, key) {
var results = _.chain(val)
.map(function (pair) {
return pair[1]
})
.uniq()
.value();
return results;
})
.value();
答案 0 :(得分:2)
_.reduce(a, function(memo, pair){
var key = pair[0], value = pair[1];
var bucket = memo[key] = memo[key] || [];
if (!_.contains(bucket, value)) bucket.push(value);
return memo;
}, {});
答案 1 :(得分:2)
这样的事情怎么样:
var groups = _.groupBy(a, '0');
var result = _.mapObject(groups, function(group){
return _.uniq(_.pluck(group, '1'));
});