Mengubah Number Atau String Menjadi Bentuk Satuan Format Size File

Kali ini saya akan membagikan sebuah function javascript yang berfungsi untuk Mengubah Number Atau String Menjadi Bentuk Satuan Format Size File. Baik, langsung saja kamu pahami alur kerjanya berikut ini.



Disini saya memiliki sekumpulan nomor dalam bentuk string dan number sebagai berikut :

Bentuk number :

1024

Bentuk string :

"1024"

Kedua nomor tersebut saya asumsikan sebagai bentuk satuan "bytes". Lalu saya ingin mengubah atau mengconvert nomor ini menjadi satuan format size file menggunakan javascript.

Hasil yang saya inginkan nantinya secara otomatis mengubah nomor tersebut menjadi satuan tertentu seperti "B", "KB", "MB", "GB", "TB", atau "PB".

Keterangan :

  • "B" adalah satuan Bytes.
  • "KB" adalah satuan "Kilo Bytes".
  • "MB" adalah satuan "Mega Bytes".
  • "GB" adalah satuan "Giga Bytes".
  • "TB" adalah satuan "Terra Bytes", dan
  • "PB" adalah satuan Penta Bytes.

Berikut ini adalah script yang berfungsi Mengubah Number Atau String Menjadi Bentuk Satuan Format Size File.

var formatThousandsRegExp=/\B(?=(\d{3})+(?!\d))/g,formatDecimalsRegExp=/(?:\.0*|(\.[^0]+)0+)$/,map={b:1,kb:1024,mb:1<<20,gb:1<<30,tb:Math.pow(1024,4),pb:Math.pow(1024,5)},parseRegExp=/^((-|\+)?(\d+(?:\.\d+)?)) *(kb|mb|gb|tb|pb)$/i;function bytes(a,e){return"string"==typeof a?parse(a):"number"==typeof a?format(a,e):null}function format(a,e){if(!Number.isFinite(a))return null;var r=Math.abs(a),t=e&&e.thousandsSeparator||"",p=e&&e.unitSeparator||"",o=e&&void 0!==e.decimalPlaces?e.decimalPlaces:2,n=Boolean(e&&e.fixedDecimals),m=e&&e.unit||"";m&&map[m.toLowerCase()]||(m=r>=map.pb?"PB":r>=map.tb?"TB":r>=map.gb?"GB":r>=map.mb?"MB":r>=map.kb?"KB":"B");var s=(a/map[m.toLowerCase()]).toFixed(o);return n||(s=s.replace(formatDecimalsRegExp,"$1")),t&&(s=s.replace(formatThousandsRegExp,t)),s+p+" "+m}function parse(a){if("number"==typeof a&&!isNaN(a))return a;if("string"!=typeof a)return null;var e,r=parseRegExp.exec(a),t="b";return r?(e=parseFloat(r[1]),t=r[4].toLowerCase()):(e=parseInt(a,10),t="b"),Math.floor(map[t]*e)}


Untuk menggunakan script di atas, silahkan panggil menggunakan fungsi berikut :

bytes(numberOrString);


Misalkan, saya ingin mengconvert angka 1024, maka penulisannya seperti berikut :

Bentuk Number :
bytes(1024)

Bentuk String :

bytes("1024")

Outputnya akan menghasilkan :

1 KB


Contoh Lainnya :

bytes(9999) >>> 9.76 KB
bytes(99999) >>> 97.66 KB
bytes(999999) >>> 976.56 KB
bytes(9999999) >>> 9.54 MB
bytes(99999999) >>> 95.37 MB
bytes(999999999) >>> 953.67 MB
bytes(9999999999) >>> 9.31 GB
bytes(99999999999) >>> 93.13 GB
bytes(999999999999) >>> 931.32 GB
bytes(9999999999999) >>> 9.09 TB
bytes(99999999999999) >>> 90.95 TB
bytes(999999999999999) >>> 909.49 TB
bytes(9999999999999999) >>> 8.88 PB


Nah, bagaimana jika kita ingin mengconvert nomor tersebut hanya dalam bentuk satuan tertentu saja ?? katakanla satuannya "MB". Maka kamu bisa menggunakan format option sebagai berikut :

optionBytes = {
    unit: "mb"
};

bytes(999999999, optionBytes)

Output :

953.67 mb


Selanjutnya, Bagaimana jika kita ingin menampilkan hasil di belangka koma sebanyak 5 digit ?? 
Untuk menampilkan banyaknya angka dibelakang koma, kamu bisa menggunakan format option berikut ini :

optionBytes = {
    decimalPlaces: 5
};

bytes(999999999, optionBytes)

Output :

953.67432 MB


Kamu juga bisa membuat kombinasi satuan file dan banyaknya angka di belakan koma sekaligus. Lihat format option berikut ini:

optionBytes = {
    unit: "gb",
    decimalPlaces: 5
};

bytes(999999999, optionBytes)

Output :

0.93132 gb


Nah, mungkin itu saja artikel yang bisa saya bagikan untuk hari ini. Jika ada kendala dalam pemakaian silahkan komentar di bawah.