javascript - 在Javascript中将长数字转换为1M、1K等

标签 javascript

当条件第一次为真时,如何停止循环?

<p id="numb"></p>

这是我的 JavaScript 代码,我哪里出错了?我希望当条件为真时循环停止并且不检查其他变体?

function round (number) {
    var str = number.replace(/[, .]/g, "");
    var numb = parseInt(str);
    var point = {
        "T": Math.pow(10, 12),
        "B": Math.pow(10, 9),
        "M": Math.pow(10, 6),
        "K": Math.pow(10, 3)
    };

    Object.keys(point).forEach(function (key) {
        var pNumb = point[key];
       // console.log(pNumb);
      //  console.log(key);
        if (pNumb < numb) {
            var letter  = key;
            console.log(letter);
            var z = numb / pNumb;
            if (numb % pNumb !== 0) {
                document.getElementById("numb").innerHTML = z.toFixed(1) + letter;
            } else {
                document.getElementById("numb").innerHTML = z + letter;
            }
            return false;
        }

    });
}
    round("665,421,000")

最佳答案

返回false不会提前停止forEach循环。尽早停止此类循环的唯一方法是抛出异常(您需要在循环外捕获该异常)。

我通常推荐using a for...of loop如果您使用的是足够新的 Javascript 版本,而不是 forEach。但在这种情况下,由于您对对象(而不是对象本身)调用 Object.keys() 的结果调用 forEach,因此您可以使用for...in 循环,它一直存在于 Javascript 中。

关于javascript - 在Javascript中将长数字转换为1M、1K等,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48650795/

相关文章:

javascript - 单击一定数量后更改 div 背景

javascript - 使用 AJAX 向 PHP Web 服务提交基本表单数据

Javascript 选择多个选项

asp.net - 使用 jQuery 重新触发链接上的点击事件

javascript - 将 Actionscript 转换为 Javascript

javascript - 函数组件不能有引用。您的意思是使用 React.forwardRef() 吗?

javascript - 位置样式为绝对时滚动时的文本框定位问题

javascript - 旋转/平移和恢复后在 Canvas 上定位

javascript - Redux+React 管理两个(或多个)相同元素的状态。如何?

javascript - 使用 Service Worker 预缓存静态文件