Javascript 没有if语句,有没有更有效的方法来编写代码?
我编写了这段代码,它使用set interval函数遍历数组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
<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];
}