दिलचस्प पोस्ट
जावा में बहु-आयामी सरणी को गतिशील रूप से बनाना संभव है? जावास्क्रिप्ट में "सबमिट फंक्शन नहीं है" त्रुटि मूल्य पर नेस्टेड सूची में एक सूची को विभाजित करें कैसे asp.net में लगातार कुकीज़ बनाने के लिए? अस्थायी डेटाबेस का निर्माण करना जो कि मैवेन परीक्षण चरणों में काम करता है? एडमिन अधिकार के बिना अनुप्रयोग से विंडोज सर्विस शुरू करें (सी ++) एसक्यूएल सर्वर में group_concat के साथ एक क्वेरी कैसे करें Jquery / ajax का उपयोग करके div में सामग्री को ताज़ा / पुनः लोड करें SQL सर्वर चेक केस-संवेदनशीलता? जावा: मैं छवियों की एक सरणी से एक फिल्म कैसे बनाऊं? ओवरराइड रेल 'डिफ़ॉल्ट रैक कार्य चरण को कम करने के बाद आउटपुट फाइल मर्ज करें क्यों System.gc () कॉल करने के लिए खराब अभ्यास है? मैं सरल पीपी कार्यों में "निर्भरता इंजेक्शन" का उपयोग कैसे कर सकता हूं, और मुझे परेशान करना चाहिए? गैंट चार्ट में सबटास्क के रंग को बदलने के लिए कोड

JavaScript में अग्रणी शून्य के साथ एक संख्या पैड

संभव डुप्लिकेट:
मैं JavaScript का उपयोग कर एक ज़ेरोफ़ल्ड मान कैसे बना सकता हूं?

जावास्क्रिप्ट में, मुझे पैडिंग की आवश्यकता है I

उदाहरण के लिए, यदि मेरे पास 9 नंबर है, तो यह "0009" होगा। यदि मेरे पास बहुत से 10 कहना है, तो यह "0010" होगा। ध्यान दें कि यह हमेशा चार अंक कैसे बनाएगा।

ऐसा करने का एक तरीका यह है कि मैं शून्य से 0 सेकंड की संख्या को घटाना चाहूंगा जिसकी मुझे ज़रूरत है।

क्या ऐसा करने का एक मज़ेदार तरीका है?

Solutions Collecting From Web of "JavaScript में अग्रणी शून्य के साथ एक संख्या पैड"

इतने "चालाक" अभी तक नहीं चल रहे हैं:

function pad(n, width, z) { z = z || '0'; n = n + ''; return n.length >= width ? n : new Array(width - n.length + 1).join(z) + n; } 

जब आप किसी संख्या के साथ एक सरणी को इनिशियलाइज़ करते हैं, तो वह उस सरणी को उस मान पर सेट करता है जिससे सरणी में कई undefined तत्व होते हैं। हालांकि कुछ सरणी .join() विधियों मूल्यों के बिना सरणी तत्वों को छोड़ देते हैं, .join() नहीं करता है, या कम से कम पूरी तरह से नहीं; यह उन्हें मानता है जैसे कि उनका मान खाली स्ट्रिंग है। इस प्रकार आपको सरणी तत्वों के बीच शून्य वर्ण (या जो भी "z" है) की प्रति प्राप्त होती है; यही कारण है कि वहां + 1 ए है।

उदाहरण उपयोग:

 pad(10, 4); // 0010 pad(9, 4); // 0009 pad(123, 4); // 0123 pad(10, 4, '-'); // --10 
 function padToFour(number) { if (number<=9999) { number = ("000"+number).slice(-4); } return number; } 

ऐसा कुछ?

बोनस समझ से बाहर नहीं बल्कि एक आकर्षक लाइन ES6 संस्करण:

 let padToFour = number => number <= 9999 ? ("000"+number).slice(-4) : number; 

ES6isms:

  • let एक ब्लॉक स्कॉक्स्ड वेरिएबल (जैसा कि वे के फंक्शनल स्क्रॉपिंग के विपरीत)
  • => एक तीर का कार्य है जो अन्य चीजों के बीच function जगह लेता function और इसके मापदंडों द्वारा तैयार किया जाता है
  • यदि कोई तीर फ़ंक्शन एक एकल पैरामीटर लेता है तो आप कोष्ठक छोड़ सकते हैं (इसलिए number => )
  • यदि एक तीर फ़ंक्शन के शरीर में एक पंक्ति होती है जो return साथ शुरू होती है तो आप ब्रेसिज़ और return कीवर्ड को छोड़ सकते हैं और बस अभिव्यक्ति का उपयोग कर सकते हैं
  • फ़ंक्शन के शरीर को एक पंक्ति में लाने के लिए मैंने धोखा दिया और त्रिभुज अभिव्यक्ति का इस्तेमाल किया

प्रयत्न:

 String.prototype.lpad = function(padString, length) { var str = this; while (str.length < length) str = padString + str; return str; } 

अब परीक्षण करें:

 var str = "5"; alert(str.lpad("0", 4)); //result "0005" var str = "10"; // note this is string type alert(str.lpad("0", 4)); //result "0010" 

DEMO


ES8 में, हमारे पास नई विधि padStart और padEnd जो कि वाक्य रचना के नीचे है।

'स्ट्रिंग'.padStart (लक्ष्यरेखा [, पैडस्ट्रिंग]):

तो अब हम उपयोग कर सकते हैं

 const str = "5"; str.padStart(4, '0'); // '0005' 

मजेदार, मुझे हाल ही में यह करना था।

 function padDigits(number, digits) { return Array(Math.max(digits - String(number).length + 1, 0)).join(0) + number; } 

जैसे प्रयोग करें:

 padDigits(9, 4); // "0009" padDigits(10, 4); // "0010" padDigits(15000, 4); // "15000" 

सुंदर नहीं, लेकिन प्रभावी

आपने कहा था कि आपके पास नंबर है-

 String.prototype.padZero= function(len, c){ var s= '', c= c || '0', len= (len || 2)-this.length; while(s.length<len) s+= c; return s+this; } Number.prototype.padZero= function(len, c){ return String(this).padZero(len,c); } 

आप ऐसा कुछ कर सकते हैं:

 function pad ( num, size ) { return ( Math.pow( 10, size ) + ~~num ).toString().substring( 1 ); } 

संपादित करें: यह फ़ंक्शन के लिए केवल एक बुनियादी विचार था, लेकिन बड़ी संख्याओं (साथ ही अमान्य इनपुट) के लिए समर्थन जोड़ने के लिए, यह शायद बेहतर होगा:

 function pad ( num, size ) { if (num.toString().length >= size) return num; return ( Math.pow( 10, size ) + Math.floor(num) ).toString().substring( 1 ); } 

यह 2 बातें करता है:

  1. यदि संख्या निर्दिष्ट आकार से अधिक है, तो यह केवल संख्या वापस करेगा।
  2. ~~num स्थान पर Math.floor(num) का उपयोग करके बड़ी संख्या का समर्थन किया जाएगा।

मज़े के लिए, अतिरिक्त शून्य बनाने के लिए एक लूप का उपयोग करने के बजाय:

 function zeroPad(n,length){ var s=n+"",needed=length-s.length; if (needed>0) s=(Math.pow(10,needed)+"").slice(1)+s; return s; } 

यह वाकई 'चालाक' नहीं है, लेकिन प्रत्येक पैडिंग 0 लिए स्ट्रिंग कॉन्सटेनेशन करने की तुलना में पूर्णांक आपरेशन करने के लिए तेज़ है

 function ZeroPadNumber ( nValue ) { if ( nValue < 10 ) { return ( '000' + nValue.toString () ); } else if ( nValue < 100 ) { return ( '00' + nValue.toString () ); } else if ( nValue < 1000 ) { return ( '0' + nValue.toString () ); } else { return ( nValue ); } } 

यह फ़ंक्शन आपके विशेष आवश्यकता (4 अंकों के पेडिंग) के लिए भी कठिन है, इसलिए यह सामान्य नहीं है।

चूंकि आपने बताया है कि हमेशा 4 की लंबाई होने जा रहा है, मैं इस चालाक को बनाने के लिए कोई त्रुटि जांच नहीं करेगा। 😉

 function pad(input) { var BASE = "0000"; return input ? BASE.substr(0, 4 - Math.ceil(input / 10)) + input : BASE; } 

आइडिया: बस '0000' की जगह दी गई संख्या के साथ … मुद्दा यह है, अगर input 0 है, तो मुझे '0000' लौटने के लिए कड़ी मेहनत की आवश्यकता है। जबरदस्त हंसी।

यह काफी चालाक होना चाहिए

JSFiddler: http://jsfiddle.net/Up5Cr/