पाठ के प्रत्येक अक्षर को कैसे संसाधित करें (बेंचमार्क के साथ)
https://jsperf.com/str-for-in-of-foreach-map-2
के लिये
क्लासिक और अब तक सबसे अधिक प्रदर्शन वाला । यदि आप एक प्रदर्शन महत्वपूर्ण एल्गोरिथ्म में इसका उपयोग करने की योजना बना रहे हैं, या इसे ब्राउज़र संस्करणों के साथ अधिकतम संगतता की आवश्यकता है, तो आपको इसके साथ जाना चाहिए।
for (var i = 0; i < str.length; i++) {
console.info(str[i]);
}
के लिए
के लिए ... पुनरावृत्ति के लिए नया ES6 है अधिकांश आधुनिक ब्राउज़रों द्वारा समर्थित। यह नेत्रहीन अधिक आकर्षक है और टाइपिंग गलतियों के लिए कम संभावना है। यदि आप एक उत्पादन आवेदन में यह एक के लिए जा रहे हैं, तो आप शायद की तरह एक transpiler का उपयोग कर किया जाना चाहिए कोलाहल ।
let result = '';
for (let letter of str) {
result += letter;
}
प्रत्येक के लिए
क्रियात्मक दृष्टिकोण। Airbnb ने मंजूरी दे दी । इस तरह से करने का सबसे बड़ा नकारात्मक पहलू यह है कि split()
, स्ट्रिंग के प्रत्येक व्यक्ति पत्र को संग्रहीत करने के लिए एक नया सरणी बनाता है।
क्यों? यह हमारे अपरिवर्तनीय नियम को लागू करता है। शुद्ध कार्यों से निपटना जो मूल्यों को लौटाते हैं, साइड इफेक्ट्स की तुलना में तर्क करना आसान है।
// ES6 version.
let result = '';
str.split('').forEach(letter => {
result += letter;
});
या
var result = '';
str.split('').forEach(function(letter) {
result += letter;
});
निम्नलिखित वे हैं जिन्हें मैं नापसंद करता हूं।
अंदर के लिए
... के विपरीत, आपको पत्र के बजाय पत्र सूचकांक मिलता है। यह बहुत खराब प्रदर्शन करता है।
var result = '';
for (var letterIndex in str) {
result += str[letterIndex];
}
नक्शा
फंक्शन अप्रोच, जो अच्छी है। हालाँकि, मानचित्र का उपयोग इसके लिए नहीं किया जाता है। किसी सरणी के अंदर मूल्यों को बदलने की आवश्यकता होने पर इसका उपयोग किया जाना चाहिए, जो कि मामला नहीं है।
// ES6 version.
var result = '';
str.split('').map(letter => {
result += letter;
});
या
let result = '';
str.split('').map(function(letter) {
result += letter;
});
for(const c of str) { ... }
। अधिक विस्तृत और विस्तृत उत्तर नहीं दिया गया है, लेकिन यह काफी नीचे है। PS: @ ARJUN का लिंक मेरे लिए काम नहीं करता है।