javascript - 如何创建“100K”等数字后缀而不必重复?
问题描述
我一直有一个问题,当我的答题器游戏中的自动答题器运行速度足够快以达到 200000 时,它开始滞后,然后它不能正常运行,或者不能正常运行。
有没有办法让10万变成10万,10.1万变成101K而不重复呢?
我用我的原始代码尝试了这个,并意识到在每个函数中添加多达 1000 个后缀有点太难了:
if (number >= 100000) {
document.getElementById(ID).innerHTML = "100K"
}
if (number >= 101000) {
document.getElementById(ID).innerHTML = "101K"
}
不断地。我不想要多个 if 语句!
这会起作用,但它会占用太多空间,我知道有一种更简单的方法,但我就是找不到。谁能提供一种方法来做到这一点?
解决方案
尝试将格式化您的号码的工作分成不同的功能。
SUFFIXES = 'KMBTqQsSOND' // or whatever you'd like them to be
function getSuffixedNumber(num) {
var power = Math.floor(Math.log10(num));
var index = Math.floor(power / 3);
num = Math.round(num / Math.pow(10, (index * 3))); // first 3 digits of the number
return num + (SUFFIXES[index - 1] || ''); // default to no suffix if we get an out of bounds index
}
您可以像这样调用函数:var x = getSuffixedNumber(101000)
,的值x
将是"101K"
。
推荐阅读
- c# - NullReferenceException 到 DateTime(用户设置)
- regex - Bash:使用 sed 和正则表达式的字符串操作不起作用:用斜杠替换字符串
- hyperledger-composer - 错误:ID 为“$sysregistries”的集合中 ID 为“Participant:com.test.participant”的对象不存在
- java - @PreAuthorize("isAuthenticated()") 与 http.anyRequest().authenticated()
- featuretools - 特征工具的截止时间和训练窗口
- php - 检查关系 laravel 并打印结果
- r - R中R6对象的组合
- python - 将数据从表导出到文本文件时出现意外的类型错误
- vba - 从矩阵到单列的唯一列表
- javascript - JavaScript。获取“资源”