Une approche, qui évite d'itérer sur un tableau, serait:
function getCookie(name) {
const value = `; ${document.cookie}`;
const parts = value.split(`; ${name}=`);
if (parts.length === 2) return parts.pop().split(';').shift();
}
Procédure pas à pas
Le fractionnement d'une chaîne par jeton produira soit un tableau avec une chaîne (même valeur), dans le cas où le jeton n'existe pas dans une chaîne, soit un tableau avec deux chaînes, dans le cas où le jeton se trouve dans une chaîne.
Le premier élément (à gauche) est une chaîne de ce qui était avant le jeton, et le second (à droite) est ce qui est une chaîne de ce qui était après le jeton.
(REMARQUE: si la chaîne commence par un jeton, le premier élément est une chaîne vide)
Considérant que les cookies sont stockés comme suit:
"{name}={value}; {name}={value}; ..."
afin de récupérer une valeur de cookie spécifique, nous avons juste besoin d'obtenir une chaîne qui se trouve après "; {name} =" et avant ""; Avant d'effectuer tout traitement, nous ajoutons la chaîne de cookies avec ";", de sorte que chaque nom de cookie, y compris le premier, soit entouré de ";" et "=":
"; {name}={value}; {name}={value}; ..."
Maintenant, nous pouvons d'abord diviser par "; {name} =", et si le jeton est trouvé dans une chaîne de cookie (c'est-à-dire que nous avons deux éléments), nous finirons avec le deuxième élément étant une chaîne qui commence par notre valeur de cookie. Ensuite, nous retirons cela d'un tableau (ie pop), et répétons le même processus, mais maintenant avec ";" comme un jeton, mais cette fois en tirant sur la chaîne de gauche (c'est-à-dire shift) pour obtenir la valeur réelle du jeton.