डिफ़ॉल्ट मान के साथ पैड
मैंने देखा कि मुझे ज्यादातर समय रूपांतरण / नंबर पैडिंग के लिए पैडलेफ्ट की आवश्यकता है
इसलिए मैंने यह फ़ंक्शन लिखा
function padL(a,b,c){//string/number,length=2,char=0
return (new Array(b||2).join(c||0)+a).slice(-b)
}
यह साधारण फ़ंक्शन इनपुट के रूप में नंबर या स्ट्रिंग का समर्थन करता है
डिफ़ॉल्ट पैड 2 वर्ण है
डिफ़ॉल्ट चार है 0
इसलिए मैं बस लिख सकता हूं
padL(1);
// 01
अगर मैं दूसरा तर्क जोड़ता हूं (पैड की चौड़ाई)
padL(1,3);
// 001
तीसरा पैरामीटर (पैड चार)
padL('zzz',10,'x');
// xxxxxxxzzz
EDIT
@BananaAcid यदि आप एक अपरिभाषित मान या 0 लंबाई स्ट्रिंग जो आपको मिलती है 0undefined
.. पास करें:
जैसे कि सुझाव दिया गया है
function padL(a,b,c){//string/number,length=2,char=0
return (new Array((b||1)+1).join(c||0)+(a||'')).slice(-(b||2))
}
लेकिन यह भी एक छोटे तरीके से प्राप्त किया जा सकता है।
function padL(a,b,c){//string/number,length=2,char=0
return (new Array(b||2).join(c||0)+(a||c||0)).slice(-b)
}
इसके साथ भी काम करता है:
padL(0)
padL(NaN)
padL('')
padL(undefined)
padL(false)
और अगर आप दोनों तरीकों से पैड बनाना चाहते हैं:
function pad(a,b,c,d){//string/number,length=2,char=0,0/false=Left-1/true=Right
return a=(a||c||0),c=new Array(b||2).join(c||0),d?(a+c).slice(0,b):(c+a).slice(-b)
}
जिसे स्लाइस का उपयोग किए बिना छोटे तरीके से लिखा जा सकता है।
function pad(a,b,c,d){
return a=(a||c||0)+'',b=new Array((++b||3)-a.length).join(c||0),d?a+b:b+a
}
/*
Usage:
pad(
input // (int or string) or undefined,NaN,false,empty string
// default:0 or PadCharacter
// optional
,PadLength // (int) default:2
,PadCharacter // (string or int) default:'0'
,PadDirection // (bolean) default:0 (padLeft) - (true or 1) is padRight
)
*/
अब अगर तुम 2 के साथ 'averylongword' पैड करने की कोशिश ... मेरी समस्या नहीं है।
कहा कि मैं तुम्हें एक टिप देता हूं।
अधिकांश समय यदि आप पैड करते हैं तो आप इसे उसी मान N के लिए करते हैं।
लूप के अंदर किसी भी प्रकार के फंक्शन का उपयोग करने से लूप धीमा हो जाता है !!!
इसलिए यदि आप सिर्फ एक लंबी सूची के अंदर कुछ नंबर छोड़ना चाहते हैं तो इस सरल कार्य को करने के लिए कार्यों का उपयोग न करें।
कुछ इस तरह का उपयोग करें:
var arrayOfNumbers=[1,2,3,4,5,6,7],
paddedArray=[],
len=arrayOfNumbers.length;
while(len--){
paddedArray[len]=('0000'+arrayOfNumbers[len]).slice(-4);
}
अगर आपको नहीं पता कि सरणी के अंदर संख्याओं के आधार पर अधिकतम पैडिंग आकार कैसे हो सकता है।
var arrayOfNumbers=[1,2,3,4,5,6,7,49095],
paddedArray=[],
len=arrayOfNumbers.length;
// search the highest number
var arrayMax=Function.prototype.apply.bind(Math.max,null),
// get that string length
padSize=(arrayMax(arrayOfNumbers)+'').length,
// create a Padding string
padStr=new Array(padSize).join(0);
// and after you have all this static values cached start the loop.
while(len--){
paddedArray[len]=(padStr+arrayOfNumbers[len]).slice(-padSize);//substr(-padSize)
}
console.log(paddedArray);
/*
0: "00001"
1: "00002"
2: "00003"
3: "00004"
4: "00005"
5: "00006"
6: "00007"
7: "49095"
*/