Babel + JSX
let a = [{
id: 1,
nested: [{
id: 1,
nestedName: 'NestName1',
count: 3
}, {
id: 2,
nestedName: 'NestName2',
count: 4
}],
name: 'parent1'
}, {
id: 2,
nested: [{
id: 3,
nestedName: 'NestName3',
count: 3
}, {
id: 2,
nestedName: 'NestName2',
count: 3
}, {
id: 4,
nestedName: 'NestName4',
count: 3
},
{
id: 20,
nestedName: 'NestName4',
count: 6
},
{
id: 20,
nestedName: 'NestName4',
count: 7
}],
name: 'parent2'
}, {
id: 3,
nested: [{
id: 5,
nestedName: 'NestName5',
count: 3
}, {
id: 6,
nestedName: 'NestName6',
count: 3
}, {
id: 4,
nestedName: 'NestName4',
count: 3
},
{
id: 30,
nestedName: 'NestName6',
count: 5
}],
name: 'parent3'
}];
let b = [{
id: 1,
nested: [{
id: 10,
nestedName: 'NestName1',
count: 3
}, {
id: 2,
nestedName: 'NestName2',
count: 3
}],
name: 'parent1'
}, {
id: 2,
nested: [{
id: 18,
nestedName: 'NestName3',
count: 3
}, {
id: 2,
nestedName: 'NestName2',
count: 3
}, {
id: 20,
nestedName: 'NestName4',
count: 3
}],
name: 'parent2'
}, {
id: 3,
nested: [{
id: 5,
nestedName: 'NestName5',
count: 3
}, {
id: 30,
nestedName: 'NestName6',
count: 3
}, {
id: 20,
nestedName: 'NestName4',
count: 3
}],
name: 'parent3'
}];
//Подсчитать сумму поля count элементов вложенной коллекции nested из коллекции a, которые встречаються во вложенных коллекциях nested коллекции b. Совпадение элементов вложенных коллекций проверяем по равенству поля id.
let col2 = _.chain(b)
.map((parent) => parent.nested)
.flatten().value();
let agg = _.chain(a)
.map((parent) => {
return {
name: parent.name,
aggregatedCount: _.reduce(parent.nested, (cumVal, nestObj) =>
cumVal + (_.some(col2, (nestControlVal) => nestControlVal.id === nestObj.id) ? nestObj.count :...