Skip to content

Instantly share code, notes, and snippets.

@winni4eva
Created March 12, 2019 03:58
Show Gist options
  • Save winni4eva/b68052b9b0adb1a30bd071fa6524e23c to your computer and use it in GitHub Desktop.
Save winni4eva/b68052b9b0adb1a30bd071fa6524e23c to your computer and use it in GitHub Desktop.
'use strict';
const data = [
{name: 'Adam', age: 30, gender: 'Male'},
{name: 'Nancy', age: 40, gender: 'Female'},
{name: 'Fred', age: 35, gender: 'Male'},
{name: 'Nina', age: 21, gender: 'Female'},
{name: 'Chloe', age: 37, gender: 'Female'},
{name: 'Neo', age: 32, gender: 'Male'},
{name: 'Max', age: 39, gender: 'Male'},
];
const formattedOutput = filterData(data);
console.log(formattedOutput);
function filterData (persons) {
if (!Array.isArray(persons)) {
return false;
}
const filteredPerson = persons.filter((person) => {
return (person.age > 30 && person.age < 40);
});
return groupBy(filteredPerson, person => person.gender);
}
function groupBy (array, func) {
const result = array.reduce((r, v, i, a, k = func(v)) => ((r[k] || (r[k] = [])).push(v), r), {});
return result;
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment