It looks like you want reduce, not map:
var newArray = _.reduce(people, function(results, person) {
var age = calculateAge(person.birthDate);
if (age > 50) {
results.push({ person: person, age: age });
}
return results;
}, []);
<y> Also, if you use ES6 + and / or use Babel, this can be useful for understanding lists:
let newArray = [for (person of people)
if (calculateAge(person.birthDate) > 50)
{ person: person, age: calculateAge(person.birthDate) }
];
Refresh . The list of passports was excluded from Babel 6. ES2015 version will look like this:
const newArray = people.reduce((results, person) => {
const age = calculateAge(person.birthDate);
return (age > 50) ? [...results, { person, age }] : results;
}, []);
(https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Spread_operator)