带有动态开始和结束变量的Javascript循环
这似乎很基本,但我找不到最好的方法来做这件事。。。我试图设置一个函数,在用户选择的开始变量和结束变量之间循环。这就是我最终得到的结果,但我相信有更好的方法来做到这一点() 注意:x&y变量索引为1,而不是零带有动态开始和结束变量的Javascript循环,javascript,loops,Javascript,Loops,这似乎很基本,但我找不到最好的方法来做这件事。。。我试图设置一个函数,在用户选择的开始变量和结束变量之间循环。这就是我最终得到的结果,但我相信有更好的方法来做到这一点() 注意:x&y变量索引为1,而不是零 getWidths1 = function(x, y) { var start = (x < y) ? x : y, end = (x < y) ? y : x, total = 0; for (; start < end;
getWidths1 = function(x, y) {
var start = (x < y) ? x : y,
end = (x < y) ? y : x,
total = 0;
for (; start < end; start++) {
total += values[start - 1] || 0;
}
return total;
};
getWidths1=函数(x,y){
变量开始=(x
我尝试了这个函数,但是当y>x时,结果是一个结果:
getWidths2 = function(x, y) {
var total = 0,
diff = (x < y) ? 1 : -1;
while (x !== y) {
total += values[x - 1] || 0;
x += diff;
}
return w;
};
getWidths2=函数(x,y){
var总计=0,
差异=(x
那么,第一个函数是最好的,还是有人有更好的方法呢?第一个也不错。我认为这更为传统:
for (var i = start; i < end; i++){
}
for(var i=start;i
唯一真正的区别是它不影响开始和结束。第一个也不错。我认为这更为传统:
for (var i = start; i < end; i++){
}
for(var i=start;i
唯一真正的区别是它不会影响开始和结束。我同意@kingjiv的观点,但有一点需要注意,如果您想将项目包含在
y
中,那么您需要:
for (var i = start; i <= end; i++){
...
}
for(var i=start;i我同意@kingjiv的观点,并附加了一条警告,即如果您想将项目包含在y
中,那么您需要:
for (var i = start; i <= end; i++){
...
}
for(var i=start;i我要做一些更改:
使用Math.min和Math.max-更具可读性
如果您想要的第一个值是values[start]
,则不要从start中减去一
var getWidths1 = function(x, y) {
var start = Math.min(x,y), end = Math.max(x,y);
var total = 0;
for (; start < end; start++) {
total += values[start] || 0;
}
return(total);
}
var getWidths1=函数(x,y){
var start=Math.min(x,y),end=Math.max(x,y);
var合计=0;
对于(;开始<结束;开始++){
总计+=值[开始]| | 0;
}
收益(总计);
}
我要做一些更改:
使用Math.min和Math.max-更具可读性
如果您想要的第一个值是values[start]
,则不要从start中减去一
var getWidths1 = function(x, y) {
var start = Math.min(x,y), end = Math.max(x,y);
var total = 0;
for (; start < end; start++) {
total += values[start] || 0;
}
return(total);
}
var getWidths1=函数(x,y){
var start=Math.min(x,y),end=Math.max(x,y);
var合计=0;
对于(;开始<结束;开始++){
总计+=值[开始]| | 0;
}
收益(总计);
}
对我来说似乎很好,但你可以使用start=Math.min(x,y);
和end=Math.max(x,y);
使脚本更可读对我来说似乎很好,但你可以使用start=Math.min(x,y);
和end=Math.max(x,y);
使脚本更可读