I am relatively new to underscore.js and I have an object included in the REST service that looks like this (I typed it manually and assigned it var here):
var production = [
{key: ["wind", "1"], value: 5},
{key: ["wind", "2"], value: 9},
{key: ["wind", "3"], value: 11},
{key: ["wind", "4"], value: 7},
{key: ["solar", "1"], value: 1},
{key: ["solar", "2"], value: 1},
{key: ["solar", "3"], value: 2},
{key: ["solar", "4"], value: 3},
{key: ["oil", "1"], value: 15},
{key: ["oil", "2"], value: 16},
{key: ["oil", "3"], value: 22},
{key: ["oil", "4"], value: 23},
];
Then even further, I have code that parses this object and creates arrays for such elements:
var orderedProduction = _.chain(production)
.groupBy(function (entity) {
return entity.key[0];
})
.map(function (values) {
return _.map(values, function (entity2) {
return entity2.value;
});
})
.value();
This gives the following results:
orderedProduction = [
[5, 9, 11, 7],
[1, 1, 2, 3],
[15, 16, 22, 23]
]
Which loses keys (wind / sun / oil). And used to draw a graph. I can also check if some of these arrays match a specific threshold:
var threshold = _.map(orderedProduction , function(arr) {
return _.max(arr) > 10;
});
My requirements are now changed, and now I need to filter out these arrays for the total amount, keeping the key.
What would I like to do with such an object:
orderedProduction = {
"wind": [5, 9, 11, 7],
"solar": [1, 1, 2, 3],
"oil": [15, 16, 22, 23]
}
, , . (.. , 10).
jsfiddle, , : http://jsfiddle.net/2mfjw3jk/
UPDATE:
, , :
var orderedProduction = _.chain(production)
.groupBy(function (entity) {
return entity.key[0];
})
.map(function (vals, key) {
return [key, _.pluck(vals, 'value')]
})
.filter(function(arr) {
var sum = 0;
_.each(arr[1], function(num){
sum += num;
})
return sum > 10;
})
.object()
.value();
( 10).