我正在尝试使用 ES6 箭头函数.filter
返回成人(杰克和吉尔)。看来我不能使用 if 语句。
为了在 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);
我的 ES5 工作示例:
let adults2 = family.filter(function (person) {
if (person.age > 18) { return person; }
});
看来我不能使用 if 语句。
箭头函数允许使用表达 or a block作为他们的身体。传递一个表达式
foo => bar
相当于下面的块
foo => { return bar; }
然而,
if (person.age > 18) person
不是一个表达式,if
是一个声明。因此,如果您想使用,则必须使用块if
在箭头函数中:
foo => { if (person.age > 18) return person; }
虽然这在技术上解决了问题,但这是一个令人困惑的使用.filter
,因为它表明您必须返回应包含在输出数组中的值。但是,回调传递给.filter
应该返回一个Boolean, i.e. true
or false
,指示该元素是否应包含在新数组中。
所以你需要的是
family.filter(person => person.age > 18);
In ES5:
family.filter(function (person) {
return person.age > 18;
});
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)