Created
March 12, 2019 03:58
-
-
Save winni4eva/b68052b9b0adb1a30bd071fa6524e23c to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
'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