const getBytes = (bytes,{unit=null,binary=false,toFixed=1} = {}) => { const divisor = binary?1024:1000; let value = bytes; let sizeLevel=-1; const sizeArray=['KB','MB','GB','TB','PB']; if(unit){ sizeLevel=sizeArray.indexOf(unit); value=(bytes/Math.pow(divisor,sizeLevel+1)).toFixed(toFixed) } else while(value>=divisor){ value=(value/divisor); if(value<100)value=value.toFixed(toFixed); else value=Math.floor(value); sizeLevel++; } if(sizeLevel<0)value = (value/divisor).toFixed(toFixed); return {bytes,value,unit:sizeArray[sizeLevel]||'KB'}; } // Returned object can be composed into a string like `${Number(obj.value).toLocaleString()} ${obj.unit}`