挑战用最简单的JS代码格式化文件大小

原创
前端路迹
2023-3-10 16:30
编辑于 2023-3-10 17:01

input 上传附件大小单位为B,一般需要将附件大小格式化为MB,GB展示,更加人性化。

循环版

function formatFileSize(bytes) {
    let units = ['B', 'KB', 'MB', 'GB', 'TB']
    while (bytes >= 1024 && units.length > 1) {
        bytes /= 1024
        units.shift()
    }
    return Number(bytes.toFixed(2)) + units[0]
}

formatFileSize(1)   // B
formatFileSize(1234567890)   // 1.15GB
formatFileSize(12345678901234567890)  // 11228329.55TB

非循环版

function formatFileSize(bytes) {
    const units = ['B', 'KB', 'MB', 'GB', 'TB'];
    const i = Math.min(Math.floor(Math.log(bytes) / Math.log(1024)), units.length - 1);
    return Number((bytes / Math.pow(1024, i)).toFixed(2)) + units[i];
}

formatFileSize(1)   // B
formatFileSize(1234567890)   // 1.15GB
formatFileSize(12345678901234567890)  // 11228329.55TB

注意:实际运用还要考虑下输入值的有效性。

转载请注明出处。本文地址: https://www.qinshenxue.com/article/probably-the-simplest-js-format-file-size-function.html
关注我的公众号