转换存储容量大小
我们知道存储容量好几个不同的单位,如 KB、MB、GB 等等。
而在反映一块硬盘的具体容量时,总是需要根据其实际大小选用合适的单位,例如我有一块 500GB 的硬盘和一根 4GB 的内存条,就不能说成 0.5GB 的硬盘和 4000MB 的内存条。
因此,我们需要一个函数来将一个容量转换为合适的单位来表示
转换存储容量大小
value 应当是以 b 位单位的 小于 1 KB,则转化成 B 小于 1 MB,则转化成 KB 小于 1 GB,则转化成 MB 以此类推,目前最大单位 PB size: 单位大小,这里是 1000
1export function formatStorageSize (currValue = 0, unit = 'B', size = 1024) {
2
3 const unites = ['B', 'KB', 'MB', 'GB', 'TB', 'PB']
4
5 if (!unites.includes(unit)) {
6 return new Error('请输入标准的存储单位')
7 }
8
9 const powSize = n => {
10 const max = unites.length
11 return max > n ? Math.pow(size, n) : Infinity
12 }
13
14 const unitesTable = unites.map((unit, index) => {
15 return {
16 suffix: unit,
17 minValue: 1 * powSize(index),
18 maxValue: 1 * powSize(index + 1)
19 }
20 })
21
22 console.log(unitesTable)
23
24 // 先恢复到以 B 为单位然后进行计算
25 const value = powSize(unites.indexOf(unit)) * currValue
26 const { suffix, minValue } = unitesTable.find(item => item.maxValue > value)
27 const ret = (value / minValue).toFixed(2) + ' ' + suffix
28
29 return ret
30}
测试代码
1