I am trying to use underscore to group my array of objects in a smaller list:
var list = [
{ Region: 'A', Vals: [ 7, 'H' ] },
{ Region: 'B', Vals: [ 40, 'H' ] },
{ Region: 'B', Vals: [ 24, 'VH' ] },
{ Region: 'C', Vals: [ 4, 'VH' ] },
{ Region: 'A',Vals: [ 40, 'VH' ] }
];
var groups = _.groupBy(list, function(value){
return value.Region;
});
var grouped = _.map(groups, function(group){
return {
Region: group[0].Region,
Vals: group[0].Vals
}
});
Which will get somewhat close, but it is missing some of the Vals. I want the arrays of 'vals' concatenated based on keys.
var list = [
{ Region: 'A', Vals: [ 7, 'H', 40, 'VH' ] },
{ Region: 'B', Vals: [ 40, 'H', 24, 'VH' ] },
{ Region: 'B', Vals: [ 24, 'VH' ] },
{ Region: 'C', Vals: [ 4, 'VH' ] }
];
Valsby replacing thegroup[0].Valswith_.flatten(_.pluck(group, 'Vals'))var res = list.reduce(function(arr, v) { if (!(v.Region in ref)) { ref[v.Region] = arr.length; arr.push({Region: v.Region, Vals: v.Vals}); } else{ [].push.apply(arr[ref[v.Region]].Vals, v.Vals); } return arr; }, []);