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

标签 javascript arrays json for-loop

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条件。

最佳答案

试试这个代码。

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)。我想这应该可以解决问题。

关于用于在范围之间循环 if 的 Javascript,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43803305/

相关文章:

javascript - Jasmine : Timeout - Async callback was not invoked within timeout

javascript - 在具有相同类的多个 div 上启动 ProgressBar

arrays - bash 将带空格的字符串添加到数组中会添加两个元素

javascript - 如何以 JSON 形式发送 Google 云平台的 Windows key ?

jquery - 通过 AJAX 将 MySQL/PHP 转换为 jQuery

javascript - 为 JSON 上的每个元素创建一个 React 组件

javascript - Bootstrap - 无法获取 "table-striped"

javascript - Angularjs 中的电子邮件/ID 重复检查

javascript - 无法在循环内添加 Google 标记

c - C中读取字符串数组