如何使用ES6胖箭头对对象数组进行.filter()

2020/11/16 23:42 · javascript ·  · 0评论

我正在尝试使用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
文章标签: ,   ,  
版权声明:本文为原创文章,版权归 javascript 所有,欢迎分享本文,转载请保留出处!

文件下载

老薛主机终身7折优惠码boke112

上一篇:
下一篇:

评论已关闭!