एक दृष्टिकोण, जो एक सरणी पर चलने से बचा जाता है, यह होगा:
function getCookie(name) {
const value = `; ${document.cookie}`;
const parts = value.split(`; ${name}=`);
if (parts.length === 2) return parts.pop().split(';').shift();
}
पूर्वाभ्यास
टोकन द्वारा एक स्ट्रिंग को विभाजित करने से या तो उत्पादन होगा, एक स्ट्रिंग (एक ही मूल्य) के साथ एक सरणी, अगर एक स्ट्रिंग में मौजूद नहीं है, या दो तारों के साथ एक सरणी, अगर एक स्ट्रिंग में पाया जाता है।
पहला (बायाँ) तत्व, टोकन से पहले का स्ट्रिंग है और दूसरा (राइट) वह है जो टोकन के बाद का स्ट्रिंग है।
(नोट: यदि स्ट्रिंग एक टोकन से शुरू होती है, तो पहला तत्व एक खाली स्ट्रिंग है)
यह देखते हुए कि कुकीज़ निम्नानुसार संग्रहीत हैं:
"{name}={value}; {name}={value}; ..."
विशिष्ट कुकी मान को पुनः प्राप्त करने के लिए, हमें केवल "; {नाम} =" और अगले ";" से पहले स्ट्रिंग प्राप्त करने की आवश्यकता है। इससे पहले कि हम कोई प्रसंस्करण करते हैं, हम कुकीज़ स्ट्रिंग को ";" के साथ जोड़ते हैं, ताकि पहले वाले सहित प्रत्येक कुकी का नाम ";" और "=" के साथ संलग्न हो;
"; {name}={value}; {name}={value}; ..."
अब, हम पहले "; {नाम} =" से विभाजित कर सकते हैं, और अगर एक कुकी स्ट्रिंग में टोकन पाया जाता है (यानी हमारे पास दो तत्व हैं), तो हम दूसरे तत्व को एक स्ट्रिंग के साथ समाप्त करेंगे जो हमारे कुकी मान से शुरू होता है। फिर हम एक सरणी (यानी पॉप) से बाहर खींचते हैं, और उसी प्रक्रिया को दोहराते हैं, लेकिन अब ";" टोकन के रूप में, लेकिन इस बार वास्तविक टोकन मूल्य प्राप्त करने के लिए बाईं स्ट्रिंग (यानी शिफ्ट) को बाहर खींच रहा है।