【问题标题】:Javascript for looping an if between range用于在范围之间循环 if 的 Javascript
【发布时间】:2017-05-05 11:02:07
【问题描述】:
var data = [
   {
     color: "black"
     width: 0
    },
   {
     color: "black"
     width: 50
    },
   {
     color: "black"
     width: 100
    },
]

案例:

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

条件:

我们知道它每次都会增加多少。在本例中为 50。

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

它总是从 0 开始。

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

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";
    }
}

这将导致第二个数据对象 (data[1]) 变为红色,其余的将变为黑色。

如何满足上述条件,如何使这段代码动态化?

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

【问题讨论】:

    标签: javascript arrays json for-loop


    【解决方案1】:

    试试这个代码。

    function loopThis(input){
        for(var i in data){
            data[i].color = "black";
        }
        var tmp = Math.floor(input/50);
        data[tmp].color = "red";
    }
    

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

    【讨论】:

    • 请勿使用parseInt 进行舍入。
    • 您可能需要管理边界条件,例如 50、100 等。在上面的登录输入中,50 将标记 data[1].color = "red"。而不是 parseInt 使用 Math.round().
    • Math.floor(input/50)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-01-23
    • 1970-01-01
    • 2013-08-30
    • 1970-01-01
    • 2016-11-29
    • 2016-10-31
    相关资源
    最近更新 更多