Javascript 没有if语句,有没有更有效的方法来编写代码?

Javascript 没有if语句,有没有更有效的方法来编写代码?,javascript,arrays,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; setInte

我编写了这段代码,它使用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];
}}

var imgaray=[“red.jpg”、“redandrange.jpg”、“green.jpg”、“orange.jpg”]
document.getElementById(“流量”).innerHTML=流量;
setInterval(函数(){
换灯();
}, 2000) ;
函数ChangeLights(){
if(traffic.src.match(imgarray[0])){
traffic.src=imgaray[1];
}else if(traffic.src.match(imgaray[1])){
traffic.src=imgaray[2];
}else if(traffic.src.match(imgarray[2]){
traffic.src=imgaray[3];
}else if(traffic.src.match(imgarray[3]){
traffic.src=imgarray[0];
}}

有没有一种方法可以在不使用所有if语句的情况下执行此操作?

您可以将
ChangeLights()
函数替换为:

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

比如:

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

for(var i=0;i您的代码归结为

var i = 0;

setInterval(ChangeLights, 2000);

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

}
var i=0;
设置间隔(变更灯,2000年);
函数ChangeLights(){
i=i
如果
语句和数组访问是
O(1)
的话,不要给你的Javascript问题加上标签。这个函数的性能还可以。我想你让它变得更糟了。是的,你说得对……我的错!我一开始不理解这个问题:\
var i = 0;

setInterval(ChangeLights, 2000);

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

}