我是编程新手,并尝试对if-else逻辑进行编程以创建数组等。

我想使用一个点变量来确定该变量属于哪个点间隔,然后使该数组具有该间隔的函数,并从该数组返回一个随机函数。

例如,我具有里程碑1000、2500等。如果userScorePoints超过2500,我希望该方法从包含有关该数字的函数的数组中返回一个随机函数,直到userScorePoints已达到下一个里程碑,是5000。

我编写的代码的问题在于,它只会从第一个if返回一个随机函数,因此即使我应该从2500获得函数,因为我的积分现在已经超过2603,所以我只能从1000获得函数。 。

有人可以帮我这个忙吗?

这是我的代码:

function getFunfact(userScorePoints) {
    var array = new Array();

    if (1000 <= userScorePoints < 2500) {
        var funfact1000 = new Array();
        funfact1000[0] = "funfacts about the number 1000";
        funfact1000[1] = "...";
        funfact1000[2] = "...";
        funfact1000[3] = "...";
        funfact1000[4] = "...";
        funfact1000[5] = "...";
        array = funfact1000;
    } else if (2500 <= userScorePoints < 5000) {
        var funfact2500 = new Array();
        funfact2500[0] = "funfacts about the number 2500";
        funfact2500[1] = "...";
        funfact2500[2] = "...";
        funfact2500[3] = "...";
        funfact2500[4] = "...";
        funfact2500[5] = "...";
        array = funfact2500;
    } else if (5000 <= userScorePoints < 10000) {
        var funfact5000 = new Array();
        funfact5000[0] = "funfacts about the number 5000";
        funfact5000[1] = "...";
        funfact5000[2] = "...";
        funfact5000[3] = "...";
        funfact5000[4] = "..."
        funfact5000[5] = "...";
        array = funfact5000;
    } else if (10000 <= userScorePoints < 20000) {
        var funfact10000 = new Array();
        funfact10000[0] = "funfacts about the number 10.000";
        funfact10000[1] = "...";
        funfact10000[2] = "...";
        funfact10000[3] = "...";
        funfact10000[4] = "...";
        funfact10000[5] = "...";
        array = funfact10000;
    } else if (20000 <= userScorePoints < 30000) {
        var funfact20000 = new Array();
        funfact20000[0] = "funfacts about the number 20.000";
        funfact20000[1] = "...";
        funfact20000[2] = "...";
        funfact20000[3] = "...";
        funfact20000[4] = "...";
        funfact20000[5] = "...";
        array = funfact20000;
    } else if (30000 <= userScorePoints < 50000) {
        //etc.
    } else {}
    return array[getRandom(6)]; //this method returns a random element, this one works.

最佳答案

您不能像这样链接关系比较。你必须写:

if (1000 <= userScorePoints && userScorePoints < 2500) {
    ...
}

您写的内容被解析为好像您写的一样:
if ((1000 <= userScorePoints) < 2500) {
    ...
}

括号中的比较结果为0或1,该值始终小于2500。

10-04 22:39