JavaScript入門 練習問題 41:配列メソッド:filterによる抽出
次のコードの実行結果として正しいものはどれですか?
```javascript
const numbers = [1, 2, 3, 4, 5];
const result = numbers.filter(num => num % 2 === 0);
console.log(result);
```
- 条件を満たす偶数のみが抽出され、`[2, 4]`という配列が出力される。
- 条件を満たさない奇数が抽出され、`[1, 3, 5]`という配列が出力される。
- 各要素の判定結果が格納され、`[false, true, ...]`が出力される。
- 条件を満たす要素が合計され、`6`という単一の数値として出力される。
- 全ての要素が2倍に変換され、`[2, 4, 6, 8, 10]`という配列が出力される。
正解と解説を見る
正解:条件を満たす偶数のみが抽出され、`[2, 4]`という配列が出力される。
`filter`メソッドによって条件(偶数)を満たす要素だけが集められるため、`[2, 4]`が出力されます。
【正解の理由】
`filter`メソッドは、コールバック関数が`true`を返した要素のみを抽出して新しい配列を作成します。`num % 2 === 0`は「2で割った余りが0(=偶数)」という条件です。
【不正解の理由】
• 「条件を満たさない奇数が抽出され〜」は誤り。`filter`は条件を満たす(`true`になる)ものを抽出する
• 「各要素の判定結果が格納され〜」は、`map`メソッドで条件式を返した時の挙動である
• 「条件を満たす要素が合計され〜」は、`reduce`メソッドなどを使った集計処理の挙動である
• 「全ての要素が2倍に変換され〜」は、`map`メソッドで`num * 2`としたときの挙動である