VIDEO LESSON

JavaScriptのArray.prototype.splice()の使い方:引数・戻り値・実例と注意点の解説動画

再生時間 7:51動画を別のタブで開く ↗
動画の字幕・文字起こしを読む

再生中の字幕を濃い黒で表示し、一番上に追従します。字幕の行を選ぶと、その位置から再生できます。

  1. 0:00こんにちは。
  2. 0:01今回はスプライスを紹介します。
  3. 0:03これは、配列の途中で要素を削除したり、挿入したりするための、配列のインスタンスメソッドです。
  4. 0:11途中の要素を取り除くだけでなく、同じ場所へ新しい要素を差し込んだり、既存の要素を別の要素へ置き換えたりできます。
  5. 0:21たとえば、タスクの一覧で、確認という項目をレビューへ置き換える、という場面で役立ちます。
  6. 0:28この動画では、書き方と引数、戻り値と元の配列への影響、記事の基本例、挿入だけの使い方、
  7. 0:35負の位置の指定、範囲外の扱い、そして注意点まで、実行結果と一緒に学びます。
  8. 0:42元の配列自体が変わる点が、大きな特徴です。
  9. 0:46削除と挿入を分けて考えるより、一つの編集として捉えると、使い方が見えてきます。
  10. 0:53まず動作環境を確認します。
  11. 0:55記事の互換性情報では、クロームでは一以降、エッジでは十二以降、ファイアーフォックスでは一以降、
  12. 0:59サファリでは一以降で使えます。
  13. 1:04ノード・ジェイエスではゼロ・一〇・ゼロ以降に対応しています。
  14. 1:08これらの数値はエムディーエヌの互換性データに基づく目安です。
  15. 1:13スプライスは古くからある基本的な機能で、現在の主要な環境では広く使えます。
  16. 1:18追加の読み込みは不要で、配列に最初から関数として備わっていることを、実機で確認済みです。
  17. 1:25対応開始の版は、推奨版という意味ではない点にも注意しましょう。
  18. 1:29長く使われている機能なので、安心して学べます。
  19. 1:33書き方を確認します。
  20. 1:34対象の配列に続けてスプライスと書き、カッコの中に、開始位置、削除件数、追加する要素の順で渡します。
  21. 1:41リファレンス名にあるプロトタイプは、実際の呼び出しで毎回書く必要はありません。
  22. 1:47開始位置は、編集を始める添字です。
  23. 1:50削除件数は、そこから何個取り除くかです。
  24. 1:53追加する要素は、取り除いた場所へ差し込まれます。
  25. 1:56戻り値は、削除した要素だけを集めた新しい配列です。
  26. 2:00スライドの例では、一、二、三、四から二と三が取り除かれ、エックスが入り、
  27. 2:04一、エックス、四になることを実機で確認しました。
  28. 2:09まずはこの三つの役割を押さえましょう。
  29. 2:12記事の基本例を見ます。
  30. 2:13下書き、確認、公開という三つのタスクが入った配列があります。
  31. 2:18開始位置一、削除件数一、追加する要素レビューでスプライスを呼びます。
  32. 2:23実行すると、配列は下書き、レビュー、公開になり、記事の期待出力と一致し、
  33. 2:27ノードの実機結果とも一致しました。
  34. 2:31戻り値として受け取ったリムーブドには、取り除かれた確認だけが入ります。
  35. 2:36ポイントは、削除と追加を一度に行うことで、置き換えになることです。
  36. 2:41変更前の値が戻り値で手に入るので、元に戻す処理や、変更履歴を残す処理にもつなげられます。
  37. 2:48タスク管理のように、順番が大切な一覧では、この置き換えの形がよく登場します。
  38. 2:54挿入だけと、削除だけの使い方を見ます。
  39. 2:57まず記事の境界例です。
  40. 2:59一と三の間に、削除件数ゼロで二を挿入します。
  41. 3:03削除件数がゼロなので何も消えず、結果は一、二、三になり、記事の期待出力と一致し、
  42. 3:07実機でも確認しました。
  43. 3:11次に削除だけです。
  44. 3:13一、二、三、四から、位置一から二件を取り除くと、戻り値は二と三になり、元の配列は一と四だけが残ります。
  45. 3:21このように、削除件数と追加要素の組み合わせで、挿入、削除、置き換えの三通りを使い分けられます。
  46. 3:29やりたい編集に合わせて、数字を選ぶのがコツです。
  47. 3:33どちらの場合も、開始位置を間違えると別の要素まで消えるので、位置の確認が欠かせません。
  48. 3:40開始位置の指定を詳しく見ます。
  49. 3:43削除件数を省略すると、開始位置から末尾までの要素がすべて取り除かれます。
  50. 3:49スライドの例では、一から五までの配列で位置二から省略すると、三、四、五が戻り、
  51. 3:54元の配列は一と二だけになることを実機で確認しました。
  52. 4:00次に、開始位置に負の数を渡すと、末尾から数えた位置になります。
  53. 4:05マイナス一は最後の要素を指すので、一、二、三から三が取り除かれます。
  54. 4:11末尾に近い要素を扱うとき、長さを数えなくてよいので便利です。
  55. 4:16ただし、読み手に意図が伝わるよう、使いどころは選びましょう。
  56. 4:22途中へ複数の要素を挿入する実例を見ます。
  57. 4:25エー、ビー、シーという配列の位置一へ、削除件数ゼロでエックスとワイの二つを渡します。
  58. 4:31実行すると、エー、エックス、ワイ、ビー、シーという順になり、実機で確認しました。
  59. 4:37このとき削除はしていないので、戻り値は空の配列になります。
  60. 4:41戻り値が空でも失敗ではない、という点が大切です。
  61. 4:45追加する要素は、渡した順番のまま並びます。
  62. 4:48メニューの途中へ項目を差し込む、行の途中へ列を加える、といった編集で、この形がそのまま使えます。
  63. 4:55挿入位置を一つずらすだけで結果が変わるので、実行前に予測してみましょう。
  64. 5:01元の配列への影響を確認します。
  65. 5:03スプライスは、元の配列を直接変更するメソッドです。
  66. 5:07スライドの例では、ジーという配列をエイチという別の変数でも参照し、ジーに対してスプライスで先頭を取り除きました。
  67. 5:16すると、ジーだけでなくエイチの方も、二十と三十だけになったことを実機で確認しました。
  68. 5:23同じ配列を共有しているためです。
  69. 5:26記事でも、状態更新ではコピーを検討する、と注意されています。
  70. 5:31元の並びや内容が後でも必要なら、先にコピーを作ってから編集しましょう。
  71. 5:36この性質を知らずに使うと、別の画面や処理で思わぬ変化が起きます。
  72. 5:41名前が似ているスライスとの違いを整理します。
  73. 5:45スライスは、指定した範囲を取り出して新しい配列を返し、元の配列は変えません。
  74. 5:50スライドの例では、一、二、三から先頭だけを取り出し、元はそのまま残ることを実機で確認しました。
  75. 5:57一方、スプライスは元を編集し、削除した分を返します。
  76. 6:01名前は一文字違いでも、元の配列を変えるかどうかが決定的に違います。
  77. 6:06取り出したいだけならスライス、配列自体を編集したいならスプライス、と目的で使い分けてください。
  78. 6:13間違えやすい組み合わせなので、この機会に区別を固めておきましょう。
  79. 6:18注意点を三つ確認します。
  80. 6:20まず、戻り値は変更後の全体ではありません。
  81. 6:23削除した要素だけの配列です。
  82. 6:26変更後の内容を知りたい場合は、元の配列の方を確認してください。
  83. 6:31次に、開始位置が長さを超えた場合です。
  84. 6:34スライドの例では、長さ三の配列に位置十を指定すると、末尾への追加として扱われ、
  85. 6:39ゼットが最後に加わり、戻り値は空になることを実機で確認しました。
  86. 6:45エラーにはならないので、意図しない追加に気づきにくい点に注意が必要です。
  87. 6:51そして、削除件数が残りの要素数を超えても、末尾までで止まります。
  88. 6:56境界では、実行前に結果を予測する習慣が役立ちます。
  89. 7:00まとめです。
  90. 7:01スプライスは、開始位置と削除件数を指定して、配列の途中で削除、挿入、置き換えを行うメソッドで、
  91. 7:07削除した要素の配列を返し、元の配列自体を変更します。
  92. 7:13ポイントは三つです。
  93. 7:15まず、削除件数ゼロで挿入、追加なしで削除、その両方で置き換えになること。
  94. 7:21次に、開始位置は負の数で末尾から数えられ、削除件数を省略すると末尾まで削除すること。
  95. 7:28そして、元の配列が直接変わるので、残したい場合はコピーを検討することです。
  96. 7:34まずは記事の基本例と境界例を実行し、戻り値と変更後の配列を予測してから確かめてみてください。
  97. 7:42お疲れさまでした。
  98. 7:43開始位置と削除件数と追加要素、この三つを言葉で説明できるようになれば、理解が深まった証拠です。
日本語字幕をダウンロード(WebVTT)

この動画で学べること

Array.prototype.splice()で配列の途中で要素を削除・挿入する方法を解説。引数と戻り値、実行結果付きのコード、間違えやすい点、ブラウザー・Node.js対応を確認できます。

解説記事・サンプルコードを読む:JavaScriptのArray.prototype.splice()の使い方:引数・戻り値・実例と注意点 →