Jednym z podejść, które pozwala uniknąć iteracji po tablicy, byłoby:
function getCookie(name) {
const value = `; ${document.cookie}`;
const parts = value.split(`; ${name}=`);
if (parts.length === 2) return parts.pop().split(';').shift();
}
Przewodnik
Podział łańcucha na token spowoduje utworzenie tablicy z jednym łańcuchem (o tej samej wartości), na wypadek, gdyby token nie istnieje w łańcuchu, lub tablicy z dwoma łańcuchami, na wypadek gdyby token został znaleziony w łańcuchu.
Pierwszy (lewy) element to ciąg tego, co było przed tokenem, a drugi (prawy) to ciąg tego, co było po tokenie.
(UWAGA: w przypadku, gdy ciąg zaczyna się od tokena, pierwszym elementem jest pusty ciąg)
Biorąc pod uwagę, że pliki cookie są przechowywane w następujący sposób:
"{name}={value}; {name}={value}; ..."
aby pobrać konkretną wartość pliku cookie, wystarczy pobrać ciąg znaków następujący po „; {name} =” i przed następnym „;”. Przed jakimkolwiek przetwarzaniem poprzedzamy ciąg plików cookie znakiem „;”, tak aby każda nazwa pliku cookie, w tym pierwsza, była ujęta z „;” i „=”:
"; {name}={value}; {name}={value}; ..."
Teraz możemy najpierw podzielić przez „; {name} =", a jeśli token zostanie znaleziony w ciągu ciasteczka (tj. Mamy dwa elementy), to skończymy z drugim elementem będącym ciągiem rozpoczynającym się od naszej wartości ciasteczka. Następnie wyciągamy to z tablicy (np. Pop) i powtarzamy ten sam proces, ale teraz za pomocą „;” jako token, ale tym razem wyciągając lewy ciąg (tj. shift), aby uzyskać rzeczywistą wartość tokena.