ES6 の矢印関数を使用して、.filter
大人 (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; }
});
ベストアンサー1
if ステートメントは使用できないようです。
矢印関数は、表現 または1つのブロック体として表現を渡す
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;
});