在Javascript中使用Math对象减少代码重复

时间:2018-01-13 18:11:08

标签: javascript

我有这段代码:

if(data > 100) {
    if(data <= 1000) {
        otherValue = 10;
    } else if (data > 1000 && data <=2000) {
        otherValue = 20;
    } else if (data > 2000 && data <=3000) {
        otherValue = 30;
    }
     ......
     ......
}

我不能继续这样做,直到,让我们说,20k。那太可怕了。而且我似乎无法找到最佳的代码解决方案。

3 个答案:

答案 0 :(得分:6)

您尚未明确定义您的要求,但似乎这应该有效。

var data = 14281;
var otherValue;

if(data > 100) {
    otherValue = 10 * Math.ceil(data / 1000);
}

console.log(otherValue);

答案 1 :(得分:2)

首先,您永远不需要重复您之前测试已经排除的测试。在您的代码中,这是>语句中的所有else if测试,您可以将其删除:

if(data > 100) {
    if(data <= 1000) {
        otherValue = 10;
    } else if ( /* data > 1000 && */ data <=2000) {
        otherValue = 20;
    } else if ( /* data > 2000 && */ data <=3000) {
        otherValue = 30;
    }
     ......
     ......
}

接下来,您在otherValue时将data <= 100设置为什么?我没有看到任何代码来处理这种情况。

最后,忽略data <= 100案例,如果if语句的模式在示例中每1000次继续,则可以使用Math.floor()Math.ceil()来计算otherValue 1}}如JLRishe's answer所示。请务必单独处理任何不适合该模式的案例,例如data <= 100

答案 2 :(得分:1)

条件可以更简单的方式设计:

$sudo service mongodb stop

如果你想让它更简单,那么这样呢?

if(data <= 1000) {
    ...
} else if (data > 1000 /*Here data have to be > 1000, bacause of else branch.*/&& ... ) {
    ...
}