"यदि कोई कर्मचारी अपना काम अच्छी तरह से करना चाहता है, तो उसे पहले अपने औजारों को तेज करना होगा।" - कन्फ्यूशियस, "द एनालेक्ट्स ऑफ कन्फ्यूशियस। लू लिंगगोंग"
मुखपृष्ठ > प्रोग्रामिंग > स्वादिष्ट पेस्टो पास्ता के लिए एक (आईएम)परिवर्तनशील खरीदारी सूची

स्वादिष्ट पेस्टो पास्ता के लिए एक (आईएम)परिवर्तनशील खरीदारी सूची

2024-08-22 को प्रकाशित
ब्राउज़ करें:955

An (Im)mutable Shopping List for a Delicious Pesto Pasta

पेस्टो पास्ता इस बात का प्रमाण है कि जी-डी मौजूद है

जीवन में कुछ चीजें हैं जो मुझे घर के बने कैपेलिनी (एंजेल हेयर) के बजाय ताजा पेस्टो की मदद से अधिक खुशी देती हैं। मैं खाने का वास्तविक शौकीन हूं - खासकर जब इटालियन व्यंजनों की बात आती है - और हमेशा अधिक जटिल व्यंजनों की कोशिश करता हूं, लेकिन इस तरह के न्यूनतम व्यंजन की सादगी और आनंद कभी भी संतुष्ट नहीं होता है। अगर मुझे आखिरी भोजन चुनने का (दुर्भाग्य) मिला तो पास्ता के बजाय सुशी और पेस्टो के बीच एक कठिन निर्णय होगा, लेकिन मुझे अभी भी लगता है कि अंत में पेस्टो पास्ता की जीत होती है।

पेस्टो की यह सारी बातें मुझे भूखा बना रही हैं

मुझे क्या करना है? खैर, पेस्टो पास्ता जरूर बनाएं। कभी-कभी आपको बस इतना कहना होता है, "क्वांडो ए रोमा!"

आइए हमारे मित्रवत इतालवी बाजार, "इल मर्काटो डि जियोवानी" से खरीदने के लिए सामग्री की एक सूची बनाकर शुरुआत करें। हम अपरिवर्तनीय और परिवर्तनशील ऑब्जेक्ट सरणियों का उपयोग करके दो व्यंजनों से अपनी खरीदारी सूची बनाएंगे। हालाँकि यह अधिक कुशल होगा कि हमें जो चाहिए उसे लिख लें, आप जानते हैं कि यह कहीं अधिक मज़ेदार है। मैं आपको बता सकता हूं कि आप भूख से मर रहे हैं और अधिक जानने के लिए कि हम पेस्टो पास्ता बनाने के तरीके को कैसे प्रोग्राम कर सकते हैं, तो चलिए खुदाई करते हैं। "मंगिया मंगिया!"

अलग-अलग पास्ता और पेस्टो रेसिपी सारणी बनाना

हम पास्तारेसिपीएरे और पेस्टोरेसिपीएरे के लिए वेरिएबल घोषित करके शुरुआत करेंगे, प्रत्येक वेरिएबल को ऑब्जेक्ट की एक सरणी को सौंपा जाएगा, जहां प्रत्येक ऑब्जेक्ट एक व्यक्तिगत घटक का प्रतिनिधित्व करता है।

जब हम प्रत्येक वेरिएबल के लिए सरणी मान निर्दिष्ट करते हैं तो हम यह सुनिश्चित करने के लिए ऑब्जेक्ट.फ़्रीज़() विधि का उपयोग करते हैं कि वे अपरिवर्तनीय हैं। (इस पर बाद में और अधिक)

प्रत्येक रेसिपी ऑब्जेक्ट में तीन गुण होते हैं, कुंजी-मूल्य जोड़े इस प्रकार हैं:

  • 'नाम' = 'स्ट्रिंग' के रूप में घटक का नाम
  • 'रेसिपी' = एक मूल्य या मान, एक 'सरणी' के रूप में, यह दर्शाता है कि किस रेसिपी के लिए सामग्री की आवश्यकता है (पास्ता, पेस्टो, या दोनों)
  • 'कीमत' = काफी अवास्तविक डमी सामग्री का उपयोग करते हुए, 'संख्या' के रूप में, अमेरिकी डॉलर में घटक की कीमत

(नोट: मैंने इस पोस्ट में चीजों को संक्षिप्त और अपेक्षाकृत सरल रखने के लिए मात्राएं और अन्य विवरण छोड़े हैं। हम इन वस्तुओं को JSON का उपयोग करके भी कार्यान्वित कर सकते हैं, लेकिन हम चीजों को पचाने में आसान रख रहे हैं यहाँ।)

इन सरणियों को स्थापित करने का कोड कुछ इस तरह दिखेगा:

const pastaRecipeArray = Object.freeze([
  { "name": "Eggs", "recipe": ["pasta"], "price": 6.99 },
  { "name": "Extra Virgin Olive Oil", "recipe": ["pasta", "pesto"], "price": 12.59 },
  { "name": "Kosher Salt", "recipe": ["pasta", "pesto"], "price": 7.89 },
  { "name": "Semolina Flour", "recipe": ["pasta"], "price": 12.95 }
])

const pestoRecipeArray = Object.freeze([
  { "name": "Basil", "recipe": ["pesto"], "price": 6.99 },
  { "name": "Black Pepper", "recipe": ["pesto"], "price": 9.99 },
  { "name": "Extra Virgin Olive Oil", "recipe": ["pasta", "pesto"], "price": 12.59 },
  { "name": "Kosher Salt", "recipe": ["pasta", "pesto"], "price": 7.89 },
  { "name": "Parmesan", "recipe": ["pesto"], "price": 15.99 },
  { "name": "Pine Nuts", "recipe": ["pesto"], "price": 13.98 }
])

आप फिर से देखेंगे कि रेसिपी कुंजी एक मान की ओर इशारा करती है जो एक सरणी के रूप में है। हमने इसे इस तरह से सेट किया है क्योंकि दोनों व्यंजनों में कुछ सामग्रियों का उपयोग किया जाता है।

यह जांचने के लिए कि पास्तारेसिपीएरे ठीक से सेट है, हम .forEach() विधि का उपयोग कर सकते हैं, एक कॉलबैक फ़ंक्शन जिसका उपयोग सरणी में प्रत्येक ऑब्जेक्ट पर पुनरावृत्त करने के लिए किया जाता है। घटक को पैरामीटर के रूप में उपयोग करते हुए, हम इसे कंसोल में निम्नानुसार लॉग कर सकते हैं:

pastaRecipeArray.forEach((ingredient) => {
  console.log(ingredient)
})

जब आप कंसोल का निरीक्षण करते हैं तो आपको निम्न आउटपुट जैसा कुछ देखना चाहिए:

Object {name: "Eggs", recipe: Array(1), price: 6.99}
Object {name: "Extra Virgin Olive Oil", recipe: Array(2), price: 12.59}
Object {name: "Kosher Salt", recipe: Array(2), price: 7.89}
Object {name: "Semolina Flour", recipe: Array(1), price: 12.95}

इसी तरह, हम अपने पेस्टोरेसिपीएरे को इस तरह लॉग कर सकते हैं:

pestoRecipeArray.forEach((ingredient) => {
  console.log(ingredient)
})

जिसका परिणाम निम्नलिखित है:

Object {name: "Basil", recipe: Array(1), price: 6.99}
Object {name: "Black Pepper", recipe: Array(1), price: 9.99}
Object {name: "Extra Virgin Olive Oil", recipe: Array(2), price: 12.59}
Object {name: "Kosher Salt", recipe: Array(2), price: 7.89}
Object {name: "Parmesan", recipe: Array(1), price: 15.99}
Object {name: "Pine Nuts", recipe: Array(1), price: 13.98}

(नोट: जब आप ऐरे (1) और ऐरे (2) जैसे आउटपुट देखते हैं तो आप या तो उन कुंजियों का चयन करने के लिए फ़ंक्शन को फिर से लिखना चाहेंगे या विवरण देखने के लिए कंसोल में ऐरे पर क्लिक करें इसमें क्या शामिल है।)

खरीदारी सूची सारणी बनाना

अब जब हमने अपनी रेसिपी सारणी स्थापित कर ली है तो हम खरीदारी सूची सारणी बनाकर अगले चरण पर जाना चाहते हैं। ऐसा करने के लिए हम अपने ऑब्जेक्ट एरे पास्तारेसिपीएरे और पेस्टोरेसिपेएरे को शॉपिंगलिस्टएरे नाम के एक नए परिवर्तनशील वेरिएबल में संयोजित करना चाहेंगे। हम इसे स्प्रेड ऑपरेटर का उपयोग करके करेंगे...जैसे:

const shoppingListArray = [...pastaRecipeArray, ...pestoRecipeArray]

अब हमारी नई सूची कैसी दिखती है यह देखने के लिए निम्नलिखित कंसोल.लॉग() का उपयोग करें। आगे बढ़ते हुए हम कुछ अव्यवस्था को दूर करने के लिए पूर्ण ऑब्जेक्ट के बजाय ऑब्जेक्ट के भीतर संपत्ति मूल्यों को लॉग करेंगे। आप इस कोड का उपयोग यह देखने के लिए करना चाहेंगे कि प्रक्रिया के प्रत्येक चरण के बाद हमारी सूची कैसे बदलती है।

shoppingListArray.forEach((ingredient) => {
      console.log(ingredient.name)
})

हम देख सकते हैं कि हमारी सूचियाँ कंसोल में एक साथ जुड़ गई हैं, इस बार केवल प्रत्येक घटक का नाम लॉग किया जा रहा है।

Eggs
Extra Virgin Olive Oil
Kosher Salt
Semolina Flour
Basil
Black Pepper
Extra Virgin Olive Oil
Kosher Salt
Parmesan
Pine Nuts

अपरिवर्तनीय बनाम परिवर्तनशील सरणियाँ

हमें पास्तारेसिपीऐरे और पेस्टोरेसिपीऐरे को अपरिवर्तनीय क्यों बनाना चाहिए? उन्हें अपरिवर्तनीय बनाने से यह हो जाता है कि हम उन्हें सौंपे जाने के बाद उनके मूल्यों को बदल नहीं सकते हैं। हम इन व्यंजनों को यूं ही नष्ट नहीं करना चाहते। हम उन्हें एक और गौरवशाली दिन के लिए बचाना चाहते हैं। उन अपरिवर्तनीय पारिवारिक व्यंजनों को जीवित रहने की आवश्यकता है, भले ही हम अपनी अस्थायी, परिवर्तनशील खरीदारी सूची में कुछ भी लिखने वाले हों।

हम अपने मूल व्यंजनों को प्रभावित किए बिना, इस व्यंजन को अपने विशिष्ट स्वाद के अनुसार बनाने के लिए अपनी नव निर्मित शॉपिंग लिस्टएरे से सामग्री जोड़ने या घटाने में भी सक्षम होना चाहते हैं।

सामग्री जोड़ना, बदलना और हटाना

जैसा कि आपने देखा होगा, जब हमने अपने पास्ता और पेस्टो व्यंजनों को अपनी खरीदारी सूची में जोड़ा तो हमें "एक्स्ट्रा वर्जिन ऑलिव ऑयल" और "कोशेर साल्ट" के डुप्लिकेट मिल गए। हमें इन्हें दो बार खरीदने की ज़रूरत नहीं है तो आइए इनसे छुटकारा पाएं। डुप्लिकेट को खत्म करने के शानदार तरीके हैं, लेकिन अभी हम पहले एक्स्ट्रा वर्जिन ऑलिव ऑयल ऑब्जेक्ट को हटाने के लिए .splice() का उपयोग करेंगे।

.splice() विधि किसी सरणी में तत्वों को विनाशकारी रूप से हटा देती है या बदल देती है। पहला पैरामीटर उस पहले तत्व को दर्शाता है जिसे हम हटा रहे हैं और दूसरा पैरामीटर दर्शाता है कि हम उस प्रारंभ बिंदु से कितने तत्वों को हटाना चाहते हैं। जबकि "एक्स्ट्रा वर्जिन ऑलिव ऑयल" सरणी में दूसरी वस्तु है, सरणी '0' से शुरू होती है, इसलिए तकनीकी रूप से दूसरी वस्तु को '1' द्वारा दर्शाया जाता है। आइए निम्नलिखित निष्पादित करें:

shoppingListArray.splice(1, 1)

कंसोल में आप देखेंगे कि अब केवल एक "एक्स्ट्रा वर्जिन ऑलिव ऑयल" ऑब्जेक्ट है। (नोट: यदि आप हमारे मूल रेसिपी ऐरे में से किसी एक पर .splice() या इसी तरह के तरीकों का उपयोग करने का प्रयास करते हैं तो आपको एक टाइपएरर मिलेगा क्योंकि हमने ऑब्जेक्ट.फ़्रीज़() का उपयोग किया है, जो उन्हें अपरिवर्तनीय बनाता है।)

हमारे पास अभी भी एक अतिरिक्त "कोषेर नमक" है, और अब हम इसकी पूरी क्षमता से .splice() का उपयोग करने जा रहे हैं। हमारे पहले दो मापदंडों के अलावा हमारे पास एक तीसरा पैरामीटर है जो किसी सरणी में तत्वों को नए तत्वों से बदल सकता है। मुझे अपने पेस्टो में थोड़ा सा नींबू मिलाना पसंद है, और मुझे बहुत अधिक नमकीन खाना पसंद नहीं है, तो चलिए आगे बढ़ते हैं और अपने अतिरिक्त "कोषेर नमक" को अपनी नई "नींबू" वस्तु से बदल देते हैं। बेहतर पठनीयता के लिए हम अपने लेमन ऑब्जेक्ट को एक वेरिएबल के रूप में घोषित करेंगे और इसे तीसरे .splice() पैरामीटर के रूप में शामिल करेंगे।

const lemon = { "name": "Lemon", "recipe": ["pesto"], "price": 2.04 }

shoppingListArray.splice(6, 1, lemon)

आज मैं थोड़ा स्वादिष्ट महसूस कर रहा हूं तो चलिए चीजों को थोड़ा बदलते हैं और .push() का उपयोग करके कुछ भुने हुए टमाटर मिलाते हैं। .push() के साथ हम सरणी के अंत में तत्व जोड़ सकते हैं, प्रत्येक पैरामीटर एक नए तत्व का प्रतिनिधित्व करता है। तो आइए अपनी सूची में कुछ "चेरी टमाटर" जोड़ें। ज़रा सोचो, मैं "लहसुन" भी भूल गया!

const tomatoes = { "name": "Cherry Tomatoes", "recipe": ["pesto"], "price": 5.99 }

const garlic = { "name": "Garlic", "recipe": ["pesto"], "price": 2.99 }

shoppingListArray.push(tomatoes, garlic)

हमारी खरीदारी सूची व्यवस्थित करना

अब जब हमारे पास सभी सामग्रियां अच्छी तरह से स्थापित हो गई हैं तो आइए उन्हें इस तरह से व्यवस्थित करें जिससे हमारा खरीदारी अनुभव सहज हो जाए।

आइए .sort() का उपयोग करके अपनी सूची को वर्णानुक्रम में व्यवस्थित करें।

shoppingListArray.sort((a, b) => {
  const nameA = a.name
  const nameB = b.name

  if (nameA  nameB) {
    1
  }
  return 0
})

हमारी खरीदारी सूची अब कंसोल में इस तरह दिखती है।

Basil
Black Pepper
Cherry Tomatoes
Eggs
Extra Virgin Olive Oil
Garlic
Kosher Salt
Lemon
Parmesan
Pine Nuts
Semolina Flour

हमारी अपेक्षित लागतों के लिए पहले से योजना बनाना

अब हम बाजार में जाने के लिए तैयार हैं, लेकिन पहले .reduce() का उपयोग करके यह सुनिश्चित कर लें कि हमें कितने पैसे की जरूरत है। .reduce() के साथ बहुत कुछ करना बाकी है, और मुझे भूख लग रही है, इसलिए मैं विवरण छोड़ दूँगा।

const ingredientsPrice = shoppingListArray.reduce((accumulator, ingredient) => {
  return accumulator   ingredient.price
}, 0)

console.log("You will need $"   ingredientsPrice   " to make pesto pasta. Man is life is expensive.")
// You will need $98.39 to make pesto pasta. Wow, life is expensive.

नई रेसिपी सूची सारणी बनाना

इसलिए हम दुकान पर गए और अपनी सामग्रियां ले आए, लेकिन अब हम अपनी सामग्रियों को वापस उनके संबंधित व्यंजनों में अलग करना चाहते हैं, बस सब कुछ मेज पर रखना है और चीजों को क्रम में रखना है। आइए .filter(), .includes(), और निश्चित रूप से .forEach() का उपयोग करके उन्हें कंसोल पर लॉग इन करने के लिए दो नए एरे, पास्ता इंग्रीडिएंट्स और पेस्टो इंग्रीडिएंट्स बनाएं।

const pastaIngredients = shoppingListArray.filter((ingredient) => {
  return ingredient.recipe.includes('pasta')
})

pastaIngredients.forEach((ingredient) => {
  console.log(ingredient.name)
})
const pestoIngredients = shoppingListArray.filter((ingredient) => {
  return ingredient.recipe.includes('pesto')
})

pestoIngredients.forEach((ingredient) => {
  console.log(ingredient.name)
})

"इसे लपेट रहा है

जैसा कि आप इन्हें कंसोल पर लॉग इन करके देख सकते हैं, हमने सफलतापूर्वक एक शॉपिंगलिस्टएरे बनाया है जिसने हमारे मूल अपरिवर्तनीय रेसिपी एरे, पास्तारेसिपीएरे और पेस्टोरेसिपेरेरे को संशोधित नहीं किया है। फिर हम अपनी पसंद के अनुसार सामग्रियों को जोड़ने, हटाने और बदलने के लिए शॉपिंग लिस्टएरे को विनाशकारी तरीके से संशोधित करने में सक्षम थे। हमने यह भी गणना की कि स्टोर पर जाने से पहले हमें कितना खर्च करना होगा। अंत में, हम एक शानदार भोजन की तैयारी में इन सामग्रियों को उनके संबंधित व्यंजनों, पास्ता इंग्रीडिएंट्स और पेस्टो इंग्रीडिएंट्स में अलग करने में सक्षम हुए।

खैर, वह कितना स्वादिष्ट पकवान था। मुझे आशा है कि आपने इसका उतना ही आनंद लिया जितना मैंने लिया। फिर से, मंगिया मंगिया!

विज्ञप्ति वक्तव्य यह लेख यहां पुन: प्रस्तुत किया गया है: https://dev.to/lakadaize/an-immutable-shopping-list-for-a-delicious-pesto-pasta-2jd6?1 यदि कोई उल्लंघन है, तो कृपया स्टडी_गोलंग@163.com पर संपर्क करें। इसे हटाने के लिए
नवीनतम ट्यूटोरियल अधिक>

चीनी भाषा का अध्ययन करें

अस्वीकरण: उपलब्ध कराए गए सभी संसाधन आंशिक रूप से इंटरनेट से हैं। यदि आपके कॉपीराइट या अन्य अधिकारों और हितों का कोई उल्लंघन होता है, तो कृपया विस्तृत कारण बताएं और कॉपीराइट या अधिकारों और हितों का प्रमाण प्रदान करें और फिर इसे ईमेल पर भेजें: [email protected] हम इसे आपके लिए यथाशीघ्र संभालेंगे।

Copyright© 2022 湘ICP备2022001581号-3