length
एक संपत्ति है, एक विधि नहीं है। आप इसे नहीं कह सकते, इसलिए आपको कोष्ठक की आवश्यकता नहीं है ()
:
function getlength(number) {
return number.toString().length;
}
अद्यतन: जैसा कि टिप्पणियों में चर्चा की गई है, उपरोक्त उदाहरण फ्लोट संख्या के लिए काम नहीं करेगा। इसे काम करने के लिए हम या तो एक अवधि से छुटकारा पा सकते हैं String(number).replace('.', '').length
, या नियमित अभिव्यक्ति के साथ अंकों की गणना कर सकते हैं String(number).match(/\d/g).length
:।
गति के संदर्भ में संभावित रूप से दिए गए संख्या में अंकों की संख्या प्राप्त करने का सबसे तेज़ तरीका यह गणितीय रूप से करना है। के लिए धनात्मक पूर्णांक वहाँ के साथ एक अद्भुत एल्गोरिथ्म है log10
:
var length = Math.log(number) * Math.LOG10E + 1 | 0; // for positive integers
सभी प्रकार के पूर्णांकों (नकारात्मक सहित) के लिए @ Mwr247 से एक शानदार अनुकूलित समाधान है , लेकिन उपयोग करने में सावधानी बरतें Math.log10
, क्योंकि यह कई विरासत ब्राउज़रों द्वारा समर्थित नहीं है। तो के Math.log10(x)
साथ बदलने Math.log(x) * Math.LOG10E
से संगतता समस्या हल हो जाएगी।
फ़्लोटिंग पॉइंट गणित के अच्छी तरह से ज्ञात व्यवहार के कारण दशमलव संख्याओं के लिए तेजी से गणितीय समाधान आसान नहीं होगा , इसलिए कास्ट-टू-स्ट्रिंग दृष्टिकोण अधिक आसान और मूर्ख प्रमाण होगा। जैसा कि @streetlogics द्वारा उल्लेख किया गया है तेजी से कास्टिंग स्ट्रिंग संख्या के लिए सरल संख्या के साथ किया जा सकता है, जिसके लिए प्रतिस्थापित समाधान का नेतृत्व किया जा सकता है:
var length = (number + '').replace('.', '').length; // for floats