ES6 Fat Arrow を使用してオブジェクトの配列を .filter() する方法 質問する

ES6 Fat Arrow を使用してオブジェクトの配列を .filter() する方法 質問する

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;
});

おすすめ記事