4

ループをまったく使用しない Java 用の非常に洗練された「ヒューマナイズ」コンバーターを stackoverflow で見つけました。

JavaScriptで同じことをすることは可能ですか?(例: 1024 バイト => 1 kb)?

シンプルに聞こえるかもしれませんが、私はそれをかなり検索しました

ご参考までに : Java バージョン

4

2 に答える 2

5
function byteCount (bytes, unit) {
  if (bytes < (unit = unit || 1000)) 
    return bytes + " B";
  var exp = Math.floor (Math.log (bytes) / Math.log (unit));
  var pre = ' ' +(unit === 1000 ? "kMGTPE" : "KMGTPE").charAt (exp - 1) + (unit === 1000 ? "" : "i") + 'B';
    return (bytes / Math.pow (unit, exp)).toFixed (1) + pre;
}

[ 0, 27, 999, 1000, 1023, 1024, 1728, 110592, 7077888, 
  452984832, 28991029248, 1855425871872, 9223372036854775807].forEach (
    function (v) { console.log (v, byteCount (v), byteCount (v, 1024)); });

/* Displays :    
0 "0 B" "0 B"
27 "27 B" "27 B"
999 "999 B" "999 B"
1000 "1.0 kB" "1000 B"
1023 "1.0 kB" "1023 B"
1024 "1.0 kB" "1.0 KiB"
1728 "1.7 kB" "1.7 KiB"
110592 "110.6 kB" "108.0 KiB"
7077888 "7.1 MB" "6.8 MiB"
452984832 "453.0 MB" "432.0 MiB"
28991029248 "29.0 GB" "27.0 GiB"
1855425871872 "1.9 TB" "1.7 TiB"
9223372036854776000 "9.2 EB" "8.0 EiB" */

Java バージョンの結果テーブルに、7.1 MB ではなく 7.1 KB と表示されるエラーがあることに注意してください。

于 2012-05-17T18:41:53.650 に答える
0

現在、JS 用の非常に優れた Humanize ライブラリがいくつかあります。以下を参照することをお勧めします。

HubSpot/ヒューマナイズ プラス

ご覧になりたい場合は、https://github.com/taijinlee/humanizeもあります。

于 2014-01-24T02:08:12.963 に答える