javascript - How to use ES6 Fat Arrow to .filter() an array of objects -


i'm trying use es6 arrow function .filter return adults (jack & jill). appears cannot use if statement.

what need know in order in es6?

var family = [{"name":"jack",  "age": 26},               {"name":"jill",  "age": 22},               {"name":"james", "age": 5 },               {"name":"jenny", "age": 2 }];  let adults = family.filter(person => if (person.age > 18) person); // throws error  (8:37) syntaxerror: unknown: unexpected token (8:37) |let adults = family.filter(person => if (person.age > 18) person); 

my working es5 example:

let adults2 = family.filter(function (person) {   if (person.age > 18) { return person; } }); 

it appears cannot use if statement.

arrow functions either allow use expression or block body. passing expression

foo => bar 

is equivalent following block

foo => { return bar; } 

however,

if (person.age > 18) person 

is not expression, if statement. hence have use block, if wanted use if in arrow function:

foo => {  if (person.age > 18) return person; } 

while technically solves problem, confusing use of .filter, because suggests have return value should contained in output array. however, callback passed .filter should return boolean, i.e. true or false, indicating whether element should included in new array or not.

so need is

family.filter(person => person.age > 18); 

in es5:

family.filter(function (person) {   return person.age > 18; }); 

Comments

Popular posts from this blog

dns - How To Use Custom Nameserver On Free Cloudflare? -

python - Pygame screen.blit not working -

c# - Web API response xml language -