JavaScriptで名前を指定してCookieから値をとる方法

こんにちは、さるまりんです。

JavaScriptでクッキーを参照するにはこうです。

document.cookie

これで取れるはクッキーにあるものまるっと一つの文字列です。

name=salumarine; activity=music; language=japanese

みたいな感じです。

名前(name)だけを取りたい、言語(language)だけを取りたいというときはまず分解してその名前のものを取得する必要があります。

面倒なので関数にしました。

function getCookie(name) {
    const value = `; ${document.cookie}`;
    const ary = value.split(`; ${name}=`);
    if (ary.length === 2) return ary.pop().split(';').shift();
}

やっているのは、まず';'(セミコロン)と半角スペース、渡されたnameの文字列と'='(イコール)を繋いだ文字列で区切ります。
区切ることができた場合、後ろをあれば次の';'(セミコロン)の手前までを、なければそのまま値として取り出しています。

これでも取ることができます。

function getCookie(name) {
    var pair = document.cookie.split('; ').find(x => x.startsWith(name+'='));
    if (pair) return pair.split('=')[1]
}

';'(セミコロン)区切りで分割、その前の部分が取得したい名前と一致したら、'='(イコール)よりも後ろの部分を結果として返しています。

これよりも先の方が分割が一度なので速く動作しそうです。

同じことでも効率よくできるといいですね。

読んでくださってありがとうございました。
それではまた!