बनाने के बिना कॉफ़ीस्क्रिप्ट में एक स्ट्रिंग पर इटरेट करना मेरे पास मेरे कोड में कई जगहें हैं जहां मुझे एक स्ट्रिंग पर फिर से प्रयास करने और चार द्वारा ऑपरेशन चार करने की आवश्यकता है। मेरे node.js एप्लिकेशन को इस अनुरोध के दर्जनों बार करने की आवश्यकता है और अक्सर तारों की लंबाई काफी लंबी हो सकती है।एक सरणी
एकमात्र तरीका जिसे मैंने नीचे दिए गए जावास्क्रिप्ट को कॉफ़ीस्क्रिप्ट में परिवर्तित करने के लिए देखा है स्ट्रिंग की लंबाई के आधार पर एक सरणी बनाना है। मेरे साथ समस्या यह है कि यह हार्डवेयर पक्ष पर करने के लिए एक अतिरिक्त चीज है, अतिरिक्त मेमोरी लेती है, और केवल अनावश्यक लगती है (मेरे नोड एप्लिकेशन प्रोसेस dgrams - हजारों तक एक सेकंड तक - तो यह सब अतिरिक्त काम जोड़ता है)।
जावास्क्रिप्ट रास्ता:
for(var i = 0; i < str.length; i++) { /* Do stuff with str here */ }
सुझाव CoffeeScript रास्ता
for i in [0..str.length]
# Do stuff here
फिर से, मुझे लगता है कि पाश नहीं करता है के लिए पारंपरिक जब एक सरणी वस्तु के निर्माण के लिए मजबूर करने की मूर्खतापूर्ण है एक हार्डवेयर परिप्रेक्ष्य से उस कदम के साथ गड़बड़ नहीं है। हालांकि यह काम करता है, कि बस पाश के लिए एक सरल का उपयोग करने का भी सीधे जावास्क्रिप्ट रास्ता तुलना में कहीं अधिक वर्बोज़ है
i = 0
while i < str.length
# Do stuff
i++
:
मेरी केवल काम के आसपास मैंने पाया, जबकि तरह छोरों का प्रयोग है।
क्या बुनियादी पुनरावृत्तियों को निष्पादित करने के लिए अनावश्यक सरणी उत्पन्न किए बिना कॉफीस्क्रिप्ट में लूप का उपयोग करने का कोई तरीका है?
console.log("Hello world".length); // returns "11"
console.log("Hello world"[6]); // returns "o"
console.log("Hello world".indexOf("w")); // returns "6"
मैं तुम्हें उन छोरों में से किसी में सरणियों आरंभ नहीं दिख रहा है: जैसे आप arrays
का उपयोग होता
क्यों एक स्ट्रिंग से अधिक पुनरावृति? पहले तरीके से क्या गलत है? – Christoph
@ क्रिस्टोफ क्यों * स्ट्रिंग पर * फिर से नहीं? शायद वह इसे पार्स कर रहा है। – Pointy
आपका मतलब क्या है "बिना अनावश्यक सरणी उत्पन्न किए" _? आप केवल एक स्ट्रिंग का उपयोग कर सकते हैं जैसे कि यह एक सरणी थी: 'console.log (" हैलो वर्ल्ड "[7]);' – Cerbrus