我正在尝试使用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语句。
箭头功能或者允许使用一个表达式 或一块作为他们的身体。传递表达式
foo => bar
等效于以下块
foo => { return bar; }
然而,
if (person.age > 18) person
不是表达式,if
而是语句。因此,如果要if
在箭头函数中使用,则必须使用一个块:
foo => { if (person.age > 18) return person; }
虽然从技术上来说可以解决问题,但是对的使用.filter
却令人困惑,因为它表明您必须返回应包含在输出数组中的值。然而,回调传递给.filter
应返回一个布尔,即true
或者false
,指示元素是否应包含新阵列中或没有。
所以你所需要的就是
family.filter(person => person.age > 18);
在ES5中:
family.filter(function (person) {
return person.age > 18;
});
您不能使用隐式返回if
,而是需要使用花括号:
let adults = family.filter(person => { if (person.age > 18) return person} );
可以简化:
let adults = family.filter(person => person.age > 18);
这是我为那些使用的人的解决方案hook
;如果要在网格中列出项目,并且想要删除所选项目,则可以使用此解决方案。
var list = data.filter(form => form.id !== selectedRowDataId);
setData(list);
尽可能简单地使用 const adults = family.filter(({ age }) => age > 18 );
const family =[{"name":"Jack", "age": 26},
{"name":"Jill", "age": 22},
{"name":"James", "age": 5 },
{"name":"Jenny", "age": 2 }];
const adults = family.filter(({ age }) => age > 18 );
console.log(adults)
本文地址:http://javascript.askforanswer.com/ruheshiyonges6pangjiantouduiduixiangshuzujinxing-filter.html
文章标签:ecmascript-6 , higher-order-functions , javascript
版权声明:本文为原创文章,版权归 javascript 所有,欢迎分享本文,转载请保留出处!
文章标签:ecmascript-6 , higher-order-functions , javascript
版权声明:本文为原创文章,版权归 javascript 所有,欢迎分享本文,转载请保留出处!
评论已关闭!