如果条件为真,第一次如何停止循环?
<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")
答案 0 :(得分:1)
返回false
不会提前停止forEach
循环。提前停止这种循环的唯一方法是抛出一个异常(你需要在循环之外捕获)。
如果您使用足够新版本的Javascript,我通常会推荐using a for
...of
loop而不是forEach
。但在这种情况下,由于您在对象(而不是对象本身)上调用forEach
的结果调用Object.keys()
,因此您只需使用for
.. 。in
循环,它永远存在于Javascript中。
答案 1 :(得分:0)
除了forEach
如果你从它返回值没有返回值,你的代码是错误的,因为你假设对象键维持它们的顺序,你应该写这样的东西:
function round (number) {
const str = number.replace(/[, .]/g, "");
const numb = parseInt(str);
const point = [
["T", Math.pow(10, 12)],
["G", Math.pow(10, 9)],
["M", Math.pow(10, 6)],
["K", Math.pow(10, 3)]
];
for (const [key, pNumb] of point) {
if (pNumb < numb) {
const letter = key;
const z = numb / pNumb;
if (numb % pNumb !== 0) {
return z.toFixed(1) + letter;
} else {
return z + letter;
}
}
}
}
您还有一个拼写错误,而不是"G"
,您有"B"
。