Words etch cherished moments.
OG

实现一个优雅的单位转换函数

1,060 words, 3 min read
2020/03/12 AM
222 views
  • 做项目的时候碰到后端返回一个数字,单位是Kb,页面需要展示成, KB,MB,GB等单位

实现一个单位转换函数

#常规实现

          
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
function formatSizeUnits(kb) { var result = ''; if (kb < 1024) { result = kb + ' KB'; } else if (kb < 1024 * 1024) { result = (kb / 1024).toFixed(2) + ' MB'; } else if (kb < 1024 * 1024 * 1024) { result = (kb / 1024 / 1024).toFixed(2) + ' GB'; } else { result = (kb / 1024 / 1024 / 1024).toFixed(2) + ' TB'; } return result; }

这个实现方式比较简单,就是根据单位进行判断,然后进行转换。

#高阶实现

          
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
function formatSizeUnits(kb) { const units = ['KB', 'MB', 'GB', 'TB', 'PB']; let unitIndex = 0; while (kb >= 1024 && unitIndex < units.length - 1) { kb /= 1024; unitIndex++; } return `${kb.toFixed(2)} ${units[unitIndex]}`; }

这个实现方式比较复杂,首先定义了一个数组units,然后定义了一个变量unitIndex,用于记录当前的单位索引。然后使用一个循环,判断kb是否大于等于1024,如果大于等于1024,则将kb除以1024,并将unitIndex加1,直到kb小于等于1024为止。最后返回kb.toFixed(2)units[unitIndex]的组合。

怎么样,这个方法是不是很优雅呢?

Creative Commons BY-NC 4.0
https://zhangwurui.cn/article/72
0/0comments
Guest
Start the discussion...
Be the first to comment