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.
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)}
bytes(numberOrString);
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.