如何使用 ES6 Fat Arrow .filter() 对象数组
How to use ES6 Fat Arrow to .filter() an array of objects
我正在尝试将 ES6 箭头函数与 .filter
到 return 成人 (Jack & Jill) 一起使用。看来我不能使用 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
隐式 return,你需要大括号:
let adults = family.filter(person => { if (person.age > 18) return person} );
虽然可以简化:
let adults = family.filter(person => person.age > 18);
It appears I cannot use an if statement.
箭头函数允许使用 expression 或 a block 作为主体。传递表达式
foo => bar
相当于下面的块
foo => { return bar; }
然而,
if (person.age > 18) person
不是表达式,if
是语句。因此,如果您想在箭头函数中使用 if
,则必须使用块:
foo => { if (person.age > 18) return person; }
虽然这在技术上解决了问题,但这是对 .filter
的混淆使用,因为它表明您必须 return 应该包含在输出数组中的值。但是,传递给 .filter
的回调应该 return 一个 布尔值 ,即 true
或 false
,指示是否应包含该元素是否在新数组中。
所以你只需要
family.filter(person => person.age > 18);
在 ES5 中:
family.filter(function (person) {
return person.age > 18;
});
尽可能简单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)
这是我为那些使用 hook
的人提供的解决方案;如果您在网格中列出项目并希望删除所选项目,您可以使用此解决方案。
var list = data.filter(form => form.id !== selectedRowDataId);
setData(list);
return arrayname.filter((rec) => rec.age > 18)
把这个写在方法里调用
我正在尝试将 ES6 箭头函数与 .filter
到 return 成人 (Jack & Jill) 一起使用。看来我不能使用 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
隐式 return,你需要大括号:
let adults = family.filter(person => { if (person.age > 18) return person} );
虽然可以简化:
let adults = family.filter(person => person.age > 18);
It appears I cannot use an if statement.
箭头函数允许使用 expression 或 a block 作为主体。传递表达式
foo => bar
相当于下面的块
foo => { return bar; }
然而,
if (person.age > 18) person
不是表达式,if
是语句。因此,如果您想在箭头函数中使用 if
,则必须使用块:
foo => { if (person.age > 18) return person; }
虽然这在技术上解决了问题,但这是对 .filter
的混淆使用,因为它表明您必须 return 应该包含在输出数组中的值。但是,传递给 .filter
的回调应该 return 一个 布尔值 ,即 true
或 false
,指示是否应包含该元素是否在新数组中。
所以你只需要
family.filter(person => person.age > 18);
在 ES5 中:
family.filter(function (person) {
return person.age > 18;
});
尽可能简单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)
这是我为那些使用 hook
的人提供的解决方案;如果您在网格中列出项目并希望删除所选项目,您可以使用此解决方案。
var list = data.filter(form => form.id !== selectedRowDataId);
setData(list);
return arrayname.filter((rec) => rec.age > 18)
把这个写在方法里调用