我有数据字节.我需要在图表上绘制这些值作为可读标签(如2.5KB,14MB等),并需要帮助函数(输入数据 – 实际值,输出 – 人类可读字符串).
我这样做了funcion,但我想要更加优雅的实现
function tickFormatter(value,type) { var suffix = (type == "bytes") ? ['B','KB','MB','GB'] : ['','K','M','G'] if(value > (1024 * 1024 * 1024 * 1024)) { return (value / (1024 * 1024 * 1024 * 1024)).toFixed(2) + suffix[3] } else if(value > (1024 * 1024 * 1024)) { return (value / (1024 * 1024 * 1024)).toFixed(2) + suffix[2] } else if (value > (1024 * 1024)) { return (value / (1024 * 1024)).toFixed(2) + suffix[1] } else { return value.toFixed(2) + suffix[0] } }
解决方法
我喜欢这个实现:清晰紧凑:
function readablizeBytes(bytes) { var s = ['bytes','kB','GB','TB','PB']; var e = Math.floor(Math.log(bytes) / Math.log(1024)); return (bytes / Math.pow(1024,e)).toFixed(2) + " " + s[e]; }
用法:
readablizeBytes(10000000) "9.54 MB"
我不信任这个.