转换存储容量大小

我们知道存储容量好几个不同的单位,如 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