<p>在Python中:</p>
<pre><code>for i in range(1, 10)
print(i)
</code></pre>
<p>将创建序列到<code>1 2 3 4 5 6 7 8 9</code></p>
<p>JavaScript中的<a href="https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/for...in" rel="nofollow noreferrer">^{<cd2>}</a>将遍历键而不是值。你知道吗</p>
<p>所以<code>for (var i in _.range(1, 1000)) {</code>总是<code>0 ... 999</code></p>
<p>将其更改为<a href="https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/for...of" rel="nofollow noreferrer">^{<cd5>}</a></p>
<pre><code>function calculateLevel(exp) {
return new Promise((resolve, reject) => {
if (exp < 83) resolve(1);
else {
var calcExp = 0;
for (var i of _.range(1, 999)) {
calcExp += parseInt(i + 300 * Math.pow(2, i/7));
if (exp < Math.floor(calcExp/4)) {
resolve(i);
break;
}
}
}
});
}
</code></pre>
<p>此外,还不清楚为什么在这里使用Promise,因为这里没有任何异步代码。所以你可以完全取消这里的承诺。你知道吗</p>
<pre><code>const _ = require("underscore");
// ...
function calculateLevel(exp) {
if (exp < 83) return 1;
else {
var calcExp = 0;
for (var i of _.range(1, 1000)) {
calcExp += parseInt(i + 300 * Math.pow(2, i/7));
if (exp < Math.floor(calcExp/4)) {
break;
}
}
return i;
}
}
console.log(calculateLevel(123456))
</code></pre>