case56の小部屋

ゲーム以外のあれこれ。

【JavaScript】sliceとsplice

独学オンリーの駆け出しが、自身のために書き記す備忘録。その第一回。

javascriptのsliceとspliceの違いが一生覚えられなさそうな気がするので、ちょっとだけ抵抗をしてみる。何番煎じだ。

大体、こんなものの理解は単語の意味を覚える方が確実で早い。安易に暗記しようとしたり、感覚で覚えようとするから一向に整理が付かないのだ。

というわけで、まずはこの二つの単語の意味から見ていく。

  • slice薄いひと切れ、1 枚、一部分、断片、(薄刃の)へら、薄く切る
  • splice解いて組み継ぎする、継ぎ合わせる、(…に)継ぐ、重ね継ぐ、結婚させる、接合する

どちらも英語らしく複数の意味を持っているが、どうやら今回の話ではsliceが「断片」「一切れ」という「物の一部分」を示すのに対し、spliceは「継ぎ合わせ」という動作を主に示すっぽい。

なるほど。sliceはともかく、spliceについては全く知らなかった。

それでもって、sliceとspliceメソッドの内容を再確認してみる。

  • slice(a, b):a番目からb番目の要素(文字列なら文字)をコピーし、返す。
  • splice(a, b, item1, item2, ...):a番目からb個の要素(文字列なら文字)を削除し、引数としてitemを渡していた場合はそれらを削除した要素の代わりに継ぎ合わせる。

こうして見ると、明確に役割が違うことが分かる。

じゃあ「なんでこの二つを混同したの?バカなの?」という話になるわけだが、9割方spliceの役割を間違えて認識していたせいだと思う。

自分が初めてspliceを知った時、「要素や文字列の一部を切り抜きたい」という目的で調べた結果出てきたといういきさつがあった。

その際、たしかspliceに関しては「.splice(a, b)でaからb個要素を削除できます!」という話を聞いて覚えたような記憶がある。

そりゃあ勘違いするわけだ。

spliceの場合は、”削除した"というわけではなく、”切り取った後に何も継ぎ合わせなかった結果、切り取った分が消えた”と認識するのが正確なところだったくさい。

それに対してsliceは、”要素の指定した一部分の断片”という捉え方の方がニュアンスとしては正しそう。実際、元の要素は何も変化しないわけだし、「切り取る」のではなくそのまんま「断片」という考え方のほうが覚えやすいか。

英語って大事だね。

メソッドの説明をきちんと読むのも大事だが、その単語の意味も合わせて理解する癖をつけた方が、誤解なく着実に覚えていけそう。

終わり