用于在范围之间循环if的Javascript

用于在范围之间循环if的Javascript,javascript,arrays,json,for-loop,Javascript,Arrays,Json,For Loop,案例: 该函数接受一个数字输入。需要比较该数字在哪个数据点内 条件: 我们知道每次都会增加多少。在这种情况下是50 我们不知道有多少物体。在这种情况下,有3个 它总是从0开始 这是一个可以实现它的静态函数(输入=55): loopThis(输入){ 如果(输入50和输入

案例:

该函数接受一个数字输入。需要比较该数字在哪个数据点内

条件:

我们知道每次都会增加多少。在这种情况下是50

我们不知道有多少物体。在这种情况下,有3个

它总是从0开始

这是一个可以实现它的静态函数(输入=55):

loopThis(输入){
如果(输入<50){
用于(数据中的var i){
数据[i].color=“黑色”;
}
数据[0]。颜色=“红色”;
}否则如果(输入>50和输入<100){
用于(数据中的var i){
数据[i].color=“黑色”;
}
数据[1]。颜色=“红色”;
}否则{
用于(数据中的var i){
数据[i].color=“黑色”;
}
数据[2]。颜色=“红色”;
}
}
这将导致第二个数据对象(数据[1])变为红色,其余数据对象变为黑色

如何考虑上述条件,如何使代码动态化

如果数组中有4个对象,这将不起作用。我们无法知道每次要写入多少if条件。

试试这段代码

loopThis(input){
    if(input < 50){
        for(var i in data){
         data[i].color = "black";
        }
        data[0].color = "red";
    }else if(input > 50 && input < 100){
        for(var i in data){
         data[i].color = "black";
        }
        data[1].color = "red";
    }else{
        for(var i in data){
         data[i].color = "black";
        }
        data[2].color = "red";
    }
}
tmp变量将为您提供要标记为红色的索引(例如,如果输入为51,tmp=1;输入160,tmp=3)。我想这应该可以解决问题。

试试这段代码

loopThis(input){
    if(input < 50){
        for(var i in data){
         data[i].color = "black";
        }
        data[0].color = "red";
    }else if(input > 50 && input < 100){
        for(var i in data){
         data[i].color = "black";
        }
        data[1].color = "red";
    }else{
        for(var i in data){
         data[i].color = "black";
        }
        data[2].color = "red";
    }
}

tmp变量将为您提供要标记为红色的索引(例如,如果输入为51,tmp=1;输入160,tmp=3)。我想这应该可以解决问题。

不要使用
parseInt
进行舍入。您可能需要管理边界条件,例如50、100等。在上述登录输入中,50将标记数据[1]。color=“red”。使用Math.round()代替parseInt()。
Math.floor(input/50)
不要使用
parseInt
进行舍入。您可能需要管理边界条件,如50、100等。在上述登录输入中,50将标记数据[1]。color=“红色”。使用Math.round()代替parseInt。
Math.floor(输入/50)
function loopThis(input){
    for(var i in data){
        data[i].color = "black";
    }
    var tmp = Math.floor(input/50);
    data[tmp].color = "red";
}