みずまずぷろぐらみんぐ日記

日々学んだことや頭に浮かんだことを、そこはかとなく書き連ねます

【JavaScript】端っこseparatorでsplit

こんにちはー、みずまずです。

Cookieを読み込んであれこれしている時にsplit関数を使っていたのですが、個人的に新しい発見があったので書いていきます。



そもそもsplitメソッドとは…………

元の文字列を何かの目印(separator,区切り文字列のこと。コンマだったりスペースだったり文字や文字列だったり、自由に指定できる。)で切って、配列に入れてから渡してくれる関数ですね。

目印くんは配列には入らずおさらばします。



こんなような例はよく見るんじゃないでしょうか↓↓

var love = "coffee,ice cream,chocolate,neko";
//これをコンマで切って
var result1 = love.split(',');
//result1 == ["coffee", "ice cream", "chocolate", "neko"] こんな感じにしたり

var otaku = "Oshi is meccha toutoi";
//文章をスペースで切って
var result2 = otaku.split(' ');
//result2 == ["Oshi", "is", "meccha", "toutoi"] 単語毎にする

ただ上の2つの例はどちらも、分割する元の文字列の両端には目印が来ないんですよね。
じゃあこれはどうなるんでしょうか?

var answer = "Answer=Echigo-Seika";
result3 = answer.split("Answer=");
//result3 == [????????]


私はこの結果 ["Echigo-Seika"] こうなってると思ったんです。

なのでresult3[0]を使えば"Echigo-Seika"という文字列を取り出せると思ったんですが、結果は空文字列("")が返ってきてしまいました。



まさかと思いリファレンスを確認すると…………

separator が文字列の先頭または末尾、またはその両方に現れた場合、配列の先頭、末尾、または先頭と末尾の両方が、それぞれ空文字列になります。

ちゃんと書いてありました。


つまりさっきの例だとresult3の中身は

["", "Echigo-Seika"]

こんな配列になってるんですね。
何もなくても何もないのを取り出している…。


返ってきた配列の要素を取得する場合(ほとんどそうだと思いますが…)は、端っこで区切られてるかどうか考慮して添え字指定しなきゃだなぁと思いました。



リファレンス↓
developer.mozilla.org