JavaScript | 配列の一部をコピーして、新しい配列を作る(slice メソッド)

JavaScript JavaScript
スポンサーリンク

では、slice() メソッドをしっかり身につけるための レベル別(初級・中級・上級)問題集+解答+解説 を用意しました。
初心者でも「理解 → 実践 → 応用」ができるように、ステップアップ式になっています。


初級:基本の使い方を覚えよう

【問題①】

const arr = ['a', 'b', 'c', 'd'];
console.log(arr.slice(1, 3));
JavaScript

出力結果は?

✅ 解答:

['b', 'c']

💡 解説:

  • slice(1, 3) → インデックス1(’b’)から 3の手前(2) まで。
    つまり 'b''c' が取り出されます。

【問題②】

const numbers = [10, 20, 30, 40];
const copy = numbers.slice();
copy.push(50);
console.log(numbers);
JavaScript

出力結果は?

✅ 解答:

[10, 20, 30, 40]

💡 解説:

  • slice() は引数なしで 配列を丸ごとコピー
  • copynumbers は別の配列なので、copy.push(50) しても元には影響しません。

【問題③】

const fruits = ['apple', 'banana', 'cherry', 'melon'];
console.log(fruits.slice(2));
JavaScript

出力結果は?

✅ 解答:

['cherry', 'melon']

💡 解説:

  • slice(2) は「インデックス2から最後まで」取り出す。
    つまり 2番目の cherry から末尾の melon まで。

中級:少し応用してみよう

【問題④】

const nums = [1, 2, 3, 4, 5, 6];
console.log(nums.slice(2, -1));
JavaScript

出力結果は?

✅ 解答:

[3, 4, 5]

💡 解説:

  • start = 2(インデックス2 → 要素3)
  • end = -1 → 「末尾の1つ手前」
    なのでインデックス2〜4(3,4,5)が取られます。

【問題⑤】

const letters = ['A', 'B', 'C', 'D'];
console.log(letters.slice(-3, -1));
JavaScript

出力結果は?

✅ 解答:

['B', 'C']

💡 解説:

  • -3 → 末尾から3つ目(’B’)
  • -1 → 末尾の1つ手前(’C’ まで)
    だから 'B''C' の2つが入ります。

【問題⑥】

const data = [100, 200, 300];
console.log(data.slice(3));
JavaScript

出力結果は?

✅ 解答:

[]

💡 解説:

  • インデックス3は存在しない(配列の長さは3なので0〜2)。
    → 何も取り出せないため空配列 [] が返ります。

上級:動きを理解して“注意点”を押さえよう

【問題⑦:参照型(浅いコピー)】

const users = [{name: 'A'}, {name: 'B'}];
const copy = users.slice(0, 1);
copy[0].name = 'Z';
console.log(users[0].name);
JavaScript

出力結果は?

✅ 解答:

'Z'

💡 解説:

  • slice()浅いコピー(shallow copy)
    → 配列そのものは別ですが、中身(オブジェクト)は同じ参照を共有します。
  • つまり copy[0].name を変えると、元の users[0] も変わる!

【問題⑧:start と end が逆の場合】

const arr = [1, 2, 3, 4];
console.log(arr.slice(3, 1));
JavaScript

出力結果は?

✅ 解答:

[]

💡 解説:

  • start (3)end (1) より大きいと、取り出す範囲がなくなるため 空配列 になります。

【問題⑨:ページ分割風】

次のコードの結果を答えよう👇

const items = ['A','B','C','D','E','F','G'];
const page = items.slice(2, 5);
console.log(page);
JavaScript

✅ 解答:

['C', 'D', 'E']

💡 解説:

  • インデックス2(’C’)から 5 の手前(’E’)までを取り出す。
    → ページ表示や「一部だけ取り出す処理」に便利!

最後にまとめ

特徴説明
非破壊元の配列を変えない
範囲指定slice(start, end) → end は含まない
負の数末尾から数える
浅いコピーオブジェクトなどは参照が同じ
よく使う場面一部の要素だけ抽出、配列コピー、ページ分割など
タイトルとURLをコピーしました