[JavaScript] ファイルサイズを数値に直す関数

ファイルサイズなどの数値を比較するとき、カンマとか単位とか付いていると非常に面倒です。
こんな感じ。

6B
102KB
2,500KB
800MB
2GB
1TB

上記のような文字列にある程度対応できるような関数を作ってみた。

#ファイルサイズ変換関数

function fileSizeFormat(size) {
  var s   = size.split(",").join("");
  var suf = ( (s.match(/(B|KB|MB|GB|TB)$/gi)||[])[0] || "B" ).toUpperCase();
  var num = parseFloat(s.match(new RegExp(/^[0-9]+(\.[0-9]+)?/))[0]);
  var mul = 1024;

  switch (suf) {
    case "B":
      return num;
    case "KB":
      return num * Math.pow(mul, 1);
    case "MB":
      return num * Math.pow(mul, 2);
    case "GB":
      return num * Math.pow(mul, 3);
    case "TB":
      return num * Math.pow(mul, 4);
  }
}

変な単位が来たときはB(バイト)にしています。あと、単位がない場合もB(バイト)とされます。

「SI接頭辞」や「2進接頭辞」に応じて10241000などに変えてください。
また、ペタバイト(PB)・エクサバイト(EB)…など増やしていく場合は、それぞれ正規表現とSwitchに追加していってください。

#使い方

var size = '2,048KB';
fileSizeFormat(size);
// => 2097152
twitterfacebookhatenafacebook