如何优雅地评估javascript中的连续范围?

时间:2014-01-12 12:49:14

标签: javascript

我生成一个介于0和1之间的随机数。我可能使用了错误的术语,但我想要一种优雅的方法来评估范围。

有没有比以下更好的东西?

if (RandNum < 0.075) { sVal = 'a'; }
else if (RandNum < 0.123) { sVal = 'b'; }
else if (RandNum < 0.199) { sVal = 'c'; }
... etc

2 个答案:

答案 0 :(得分:5)

这样的东西
var RandNum = Math.random(),
    letter  = null,
    obj = {
        a : 0.075,
        b : 0.123,
        c : 0.199,
        d : 0.2,
        e : 0.4,
        f : 0.6,
        g : 0.8,
        h : 1
}

for (var k in obj) {
    if (RandNum < obj[k]) {
        letter = k;
        break;
    }
}

FIDDLE

或改为使用两个数组

var RandNum = Math.random(),
    letters  = 'abcdefgh'.split(''),
    range = [
        0.075,
        0.123,
        0.199,
        0.2,
        0.4,
        0.6,
        0.8,
        1
    ];

while (RandNum < range.pop());
var letter = letters[range.length];

FIDDLE

答案 1 :(得分:-1)

我唯一能想到的是:

switch(true) {
    case (RandNum < 0.075):
        sVal = 'a';
        break;
    case (RandNum < 0.123):
        sVal = 'b';
        break;
    ...
}

但它实际上只改变了外观,javascript没有为浮点运算设置深入的函数。