簡體   English   中英

在沒有 if 語句的情況下,是否有更有效的方法來執行此代碼?

[英]Is there a more efficient way of doing this code without if statements?

我制作了這段代碼,它使用 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 語句的情況下做到這一點?

您可以將ChangeLights()函數替換為:

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

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

你的代碼歸結為這個

var i = 0;

setInterval(ChangeLights, 2000);

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

}

就在這里。

就像是:

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM