没有if语句,是否有更有效的方法来执行此代码?

时间:2017-02-02 10:58:30

标签: javascript arrays

我已经使用set interval函数来完成这个代码。

<img src="red.jpg" id="traffic" width="155" height="198">

<script>

var imgarray = ["red.jpg", "redandorange.jpg", "green.jpg", "orange.jpg"]
document.getElementById("traffic").innerHTML = traffic;

setInterval(function () {
ChangeLights() ;
}, 2000) ;

function ChangeLights() { 
if (traffic.src.match(imgarray[0])){
traffic.src = imgarray[1];
}else if (traffic.src.match(imgarray[1])){
traffic.src = imgarray[2];
}else if (traffic.src.match(imgarray[2])){ 
traffic.src = imgarray[3];
}else if (traffic.src.match(imgarray[3])){ 
traffic.src = imgarray[0];
}}

如果没有所有的if语句,有没有办法呢?

4 个答案:

答案 0 :(得分:4)

您可以将ChangeLights()功能替换为:

function ChangeLights() {
    traffic.src = imgArray[imgArray.indexOf(trafficSrc) + 1 % imgArray.length];
}

答案 1 :(得分:1)

var idx = 0;

function ChangeLights() { 
    idx++;
    if (idx > 2)
        idx = 0;
    traffic.src = imgarray[idx];
}

答案 2 :(得分:1)

您的代码归结为此

var i = 0;

setInterval(ChangeLights, 2000);

function ChangeLights() {
  i = i < imgarray.length - 1 ? i + 1 : 0;
  traffic.src = imgarray[i];

}

答案 3 :(得分:0)

是的。

类似的东西:

for(var i = 0; i<imgarray.length; i++){
  if(traffic.src.match(imgarray[i])) {
       if(i+1 === traffic.length) {
         traffic.src = imgarray[0];
       } else {
          traffic.src = imgarray[i+1];
       }
       break;
  }
}