जावास्क्रिप्ट में, कोई ऐसा फ़ंक्शन कैसे लिखेगा जो किसी दिए गए [संपादित करें: सकारात्मक पूर्णांक ] संख्या (100 बिलियन से नीचे) को 3-अक्षर के संक्षिप्त नाम में परिवर्तित करता है - जहां 0-9 और az / AZ एक पत्र के रूप में गिने जा रहे हैं, लेकिन डॉट (क्योंकि यह कई आनुपातिक फोंट में इतना छोटा है) और अक्षर सीमा के संदर्भ में इसे अनदेखा नहीं किया जाएगा?
यह प्रश्न इस सहायक सूत्र से संबंधित है , लेकिन यह समान नहीं है; उदाहरण के लिए, जहाँ वह फ़ंक्शन बदल जाएगा "123456 -> 1.23k" ("123.5k" 5 अक्षर हैं) मैं कुछ ऐसा खोज रहा हूँ जो "123456 -> 0.1m" ("0 [।] 1m" 3 अक्षर हो। ) है। उदाहरण के लिए, यह आशा कार्य (आउटपुट मूल, सही आदर्श वापसी मान) का आउटपुट होगा:
0 "0"
12 "12"
123 "123"
1234 "1.2k"
12345 "12k"
123456 "0.1m"
1234567 "1.2m"
12345678 "12m"
123456789 "0.1b"
1234567899 "1.2b"
12345678999 "12b"
धन्यवाद!
अपडेट: धन्यवाद! निम्नलिखित संशोधन किए जाने पर आवश्यकताओं के अनुसार एक उत्तर है और काम करता है:
function abbreviateNumber(value) {
var newValue = value;
if (value >= 1000) {
var suffixes = ["", "k", "m", "b","t"];
var suffixNum = Math.floor( (""+value).length/3 );
var shortValue = '';
for (var precision = 2; precision >= 1; precision--) {
shortValue = parseFloat( (suffixNum != 0 ? (value / Math.pow(1000,suffixNum) ) : value).toPrecision(precision));
var dotLessShortValue = (shortValue + '').replace(/[^a-zA-Z 0-9]+/g,'');
if (dotLessShortValue.length <= 2) { break; }
}
if (shortValue % 1 != 0) shortValue = shortValue.toFixed(1);
newValue = shortValue+suffixes[suffixNum];
}
return newValue;
}