इस प्रश्न के उत्तर में पाए गए 15 विभिन्न कार्यों / विधियों के परीक्षण के लंबे, लंबे समय के बाद, अब मुझे पता है कि सबसे अच्छा (सबसे बहुमुखी और तेज) कौन सा है।
मैंने इस प्रश्न के उत्तर से 15 फ़ंक्शन / विधियाँ लीं और 100 पैड्स को निष्पादित करने में लगने वाले समय को मापने के लिए एक स्क्रिप्ट बनाई। प्रत्येक पैड शून्य के 9
साथ संख्या को पैड करेगा 2000
। यह अत्यधिक लग सकता है, और यह है, लेकिन यह आपको कार्यों के स्केलिंग के बारे में एक अच्छा विचार देता है।
मेरे द्वारा उपयोग किया गया कोड यहां पाया जा सकता है:
https://gist.github.com/NextToNothing/6325915
कोड को स्वयं संशोधित और परीक्षण करने के लिए स्वतंत्र महसूस करें।
सबसे बहुमुखी विधि प्राप्त करने के लिए, आपको एक लूप का उपयोग करना होगा। ऐसा इसलिए है क्योंकि बहुत बड़ी संख्या में दूसरों के असफल होने की संभावना है, जबकि, यह सफल होगा।
तो, किस लूप का उपयोग करना है? खैर, यह एक while
पाश होगा। एक for
लूप अभी भी तेज है, लेकिन एक while
लूप बस थोड़ा तेज है (एमएस की एक जोड़ी) - और क्लीनर।
उन लोगों की तरह उत्तर Wilco
, Aleksandar Toplek
या Vitim.us
पूरी तरह से काम करेंगे।
व्यक्तिगत रूप से, मैंने एक अलग दृष्टिकोण की कोशिश की। मैंने स्ट्रिंग / संख्या को पैड करने के लिए एक पुनरावर्ती फ़ंक्शन का उपयोग करने का प्रयास किया। यह एक सरणी में शामिल होने के तरीकों की तुलना में बेहतर काम करता है, लेकिन फिर भी, लूप के लिए उतनी जल्दी काम नहीं करता है।
मेरा कार्य है:
function pad(str, max, padder) {
padder = typeof padder === "undefined" ? "0" : padder;
return str.toString().length < max ? pad(padder.toString() + str, max, padder) : str;
}
आप पैडिंग वैरिएबल की सेटिंग के साथ या बिना मेरे फंक्शन का उपयोग कर सकते हैं। तो इस तरह से:
pad(1, 3); // Returns '001'
// - Or -
pad(1, 3, "x"); // Returns 'xx1'
व्यक्तिगत रूप से, मेरे परीक्षणों के बाद, मैं थोड़ी देर के लूप के साथ एक विधि का उपयोग करूंगा, जैसे Aleksandar Toplek
याVitim.us
। हालाँकि, मैं इसे थोड़ा संशोधित कर दूंगा ताकि आप पैडिंग स्ट्रिंग सेट करने में सक्षम हों।
इसलिए, मैं इस कोड का उपयोग करूंगा:
function padLeft(str, len, pad) {
pad = typeof pad === "undefined" ? "0" : pad + "";
str = str + "";
while(str.length < len) {
str = pad + str;
}
return str;
}
// Usage
padLeft(1, 3); // Returns '001'
// - Or -
padLeft(1, 3, "x"); // Returns 'xx1'
आप इस कोड का उपयोग करके इसे एक प्रोटोटाइप फ़ंक्शन के रूप में भी उपयोग कर सकते हैं:
Number.prototype.padLeft = function(len, pad) {
pad = typeof pad === "undefined" ? "0" : pad + "";
var str = this + "";
while(str.length < len) {
str = pad + str;
}
return str;
}
// Usage
var num = 1;
num.padLeft(3); // Returns '001'
// - Or -
num.padLeft(3, "x"); // Returns 'xx1'