2014-09-01 203 views
2

我正在使用以下Javascript來在我的網站上顯示我的Instagram關注者數量。在JavaScript中縮小數千(1k)和數百萬(1m)的本地化數字

<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script> 
<script> 
    /* 
     Get access token & ID through http://jelled.com/instagram/access-token 
     Register your app here @ Instagram http://instagram.com/developer 
     */ 
    $(function() { 
     $.ajax({ 
      type: "GET", 
      dataType: "jsonp", 
      cache: true, 
      url: "https://api.instagram.com/v1/users/{ID}/?access_token={ACCES_TOKEN}", 
      success: function(data) { 
       var ig_count = data.data.counts.followed_by.toString(); 
       ig_count = add_commas(ig_count); 
       $(".instagram_count").html(ig_count); 
      } 
     }); 

     function add_commas(number) { 
      if (number.length > 3) { 
       var mod = number.length % 3; 
       var output = (mod > 0 ? (number.substring(0, mod)) : ''); 
       for (i = 0; i < Math.floor(number.length/3); i++) { 
        if ((mod == 0) && (i == 0)) { 
         output += number.substring(mod + 3 * i, mod + 3 * i + 3); 
        } else { 
         output += ',' + number.substring(mod + 3 * i, mod + 3 * i + 3); 
        } 
       } 
       return (output); 
      } else { 
       return number; 
      } 
     } 
    }); 
</script> 
<span class="instagram_count"> </span> 

正如您所看到的,有一個函數可以在必要時添加逗號。我還想顯示跟隨者計數縮寫,例如,3,291追隨者爲3.2k,在另一個類中。所以保持完整的跟隨者數量在一個類中,並在另一個類中縮寫。我不是JavaScript最偉大的人,但我正在慢慢學習。

我發現了一個類似的問題(Is there a way to round numbers into a reader friendly format? (e.g. $1.1k)),但沒有把它運用到我的JavaScript中。

任何幫助,非常感謝。

+0

始終將詳細計數保存在內存中。使用'add_commas()'和類似的*顯示*。 – Bergi 2014-09-01 19:34:48

+2

* 3,291追隨者爲3.2k * < - 3291實際上應該輪到3.3k。 – 2014-09-01 19:38:00

+0

您是如何嘗試使用您發現的其他問題的代碼的?請向我們展示您的嘗試。 – Bergi 2014-09-01 19:39:59

回答

6
function intlFormat(num) 
{ 
    return new Intl.NumberFormat().format(Math.round(num*10)/10); 
} 
function makeFriendly(num) 
{ 
    if(num >= 1000000) 
    return intlFormat(num/1000000)+'M'; 
    if(num >= 1000) 
    return intlFormat(num/1000)+'k'; 
    return intlFormat(num); 
} 

產量:

makeFriendly(1234567) 
"1.2M" 
makeFriendly(123457) 
"123.5k" 
makeFriendly(1237) 
"1.2k" 
makeFriendly(127) 
"127" 

Intl是實現國際化行爲的JavaScript標準 '一攬子'。 Intl.NumberFormatter is specifically the localized number formatter。所以這段代碼實際上尊重你的本地配置的數千和十進制分隔符。

+0

什麼是'國際'? – Bergi 2014-09-01 19:39:09

+0

@Bergi編輯。 – 2014-09-01 19:41:24

+0

我已經完成了,感謝您的幫助 – 2014-09-02 08:48:08

相關問題