JavaScript入門 練習問題 19:構文:スプレッド構文による配列の展開
次のコードの実行結果として正しいものはどれですか?
```javascript
const arr1 = [1, 2, 3];
const arr2 = [...arr1, 4, 5];
console.log(arr2);
```
- [1, 2, 3, 4, 5]
- [1, 2, 3, [4, 5]]
- [4, 5, 1, 2, 3]
- [[1, 2, 3], 4, 5]
- コンソールにエラーメッセージが出力される
正解と解説を見る
正解:[1, 2, 3, 4, 5]
スプレッド構文(...)は配列の各要素を展開して個別の値として並べるため、arr1の要素1, 2, 3が展開され、続けて4, 5が追加された1次元の配列になります。
【正解の理由】
[...arr1, 4, 5]は「arr1を展開した後に4, 5を追加する」という意味になるため、結果は[1, 2, 3, 4, 5]という1つのフラットな配列になります。
【不正解の理由】
• 「[1, 2, 3, [4, 5]]」:スプレッド構文を使わずに4と5をそのまま配列として追加した場合の結果であり、スプレッド構文の展開機能を反映していない
• 「[4, 5, 1, 2, 3]」:要素の順序が実際のコードと逆になっており、記述順(arr1が先)を反映していない
• 「[[1, 2, 3], 4, 5]」:arr1がそのまま配列として1つの要素になっており、スプレッド構文による展開が行われていない
• 「コンソールにエラーメッセージが出力される」:スプレッド構文は配列リテラル内で正しく使用されており、構文エラーは発生しない