Uma abordagem, que evita a iteração sobre uma matriz, seria:
function getCookie(name) {
const value = `; ${document.cookie}`;
const parts = value.split(`; ${name}=`);
if (parts.length === 2) return parts.pop().split(';').shift();
}
Passo a passo
A divisão de uma sequência por token produzirá uma matriz com uma sequência (o mesmo valor), caso o token não exista em uma sequência, ou uma matriz com duas sequências, caso o token seja encontrado em uma sequência.
O primeiro elemento (à esquerda) é uma sequência do que estava antes do token, e o segundo (à direita) é a sequência do que estava após o token.
(OBSERVAÇÃO: caso a cadeia inicie com um token, o primeiro elemento é uma cadeia vazia)
Considerando que os cookies são armazenados da seguinte maneira:
"{name}={value}; {name}={value}; ..."
para recuperar um valor específico do cookie, só precisamos obter uma string que é depois de "; {name} =" e antes da próxima ";". Antes de realizar qualquer processamento, anexamos a sequência de cookies com ";", para que todos os nomes de cookies, incluindo o primeiro, sejam colocados entre ";" e "=":
"; {name}={value}; {name}={value}; ..."
Agora, podemos primeiro dividir por "; {name} =", e se o token for encontrado em uma string de cookie (ou seja, temos dois elementos), terminaremos com o segundo elemento sendo uma string que começa com o valor do cookie. Em seguida, extraímos isso de uma matriz (por exemplo, pop) e repetimos o mesmo processo, mas agora com ";" como um token, mas desta vez puxando a corda esquerda (ou seja, shift) para obter o valor real do token.