作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
if (one >= 16 && one <= 20){
if (two >= 10){
Sum.innerHTML = "$2750";
} else {
Sum.innerHTML = "$2500";
}
} else if (one >= 20 && one <= 25){
if (two >= 10){
Sum.innerHTML = "$2500";
} else {
Sum.innerHTML = "$2250";
}
}
这只是我的一小部分代码,它只是一个简单的金钱计算器,用于计算我和 friend 一起做的事情,这并不重要。我似乎无法想到是否有任何方法可以通过使用这样的函数来提高效率,因为它看起来有很多相同的代码并且是“干的”这不是它的所有代码,有这么多...不知道是否有人可以提供帮助,仅供引用,这是在 js 中,Sum 是一个段落 ID,所以只需将其视为控制台日志即可。
谢谢,伊桑
编辑
https://codepen.io/anon/pen/bxgYWL?editors=10100如果你继续下去,你可以看到所有的代码和我想添加的所有评论,以帮助你理解。如果它没有帮助并且没有其他方法可以提高效率,请不要担心。这并不重要,因为它只是一段私有(private)代码,不会引起很多问题。
最佳答案
您可以使用数据结构来保存范围边界,然后对其进行循环。
var params = [
{ onelow: 16, onehigh: 20,
two: [ { low: -inf, high: 9, value: 2500 },
{ low: 10, high: +inf, value: 2750 }],
},
{ onelow: 21, onehigh: 25,
two: [ { low: -inf, high: 9, value: 2250 },
{ low: 10, high: +inf, value: 2500 }],
},
...
];
let done = false;
for(let i = 0; !done && i < params.length; i++) {
let param = params[i];
if (one >= param.onelow && one <= param.onehigh) {
let done = false;
for (let j = 0; j < param.two.length; j++) {
let param2 = param[j];
if (two >= param2.low && two <= param2.high) {
Sum.innerHTML = "$" + param2.value;
done = true; // stop the outer loop, too
break;
}
}
}
}
关于javascript - 有没有办法让我把它变成一个函数或任何更有效的东西,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52106620/
我是一名优秀的程序员,十分优秀!