当我循环一个数组或对象时,我经常使用这种方式:
var arrCars = ["opel" , "audi" , "volvo" , "volkswagen" ,
"renault" , "porsche" , "infinity" , "lexus"];
for (var i = 0, a; a = arrCars[i]; i++) {
alert(a);
}
在我看来,它提供了明确的短代码,而不是例如这样:
for (var i = 0; i < arrCars.length; i++) {
alert(arrCars[i]);
}
在这个例子中,它不是一个大问题,但是当有一些嵌套对象等时,它会提供很多代码。
您可以在此问题here下看到许多语法可能性。但我仍然无法找到如何循环通过数组的一部分。例如,如何使用我的首选语法仅循环前3个值。当然,我可以使用额外的条件语句,但我想知道如何在for语法本身中包含这个条件,如:“ for(var i = 0; i&lt; 4; i ++){} “如果可能的话。
答案 0 :(得分:3)
答案 1 :(得分:2)
在查看建议后,您想要的是:
for (var i = 0, a; (a = arrCars[i]) && i < 3; i++) {
...
}
看来你不能把作业放在第一个地方以外的任何地方(甚至括号都不能解决)和你需要用括号来防止分配到arrCars[i] && i < 3
我同意其他评论,你最好没有一个评估为false
的数组项。
答案 2 :(得分:0)
你走在正确的轨道上。
var myArray = ["0", "1", "2", "3", "4"];
for (var i = 0; i < 4; i++) {
alert(i);
}
这将为您的数组元素0 - 2(数组中的前3个)
发出警告消息答案 3 :(得分:0)
for (var i = 0, a; ((a = arrCars[i]) || true) && i < 3; i++) {
doStuff(a);
}
在括号中包含赋值可确保赋值不会变为布尔值,然后使用true
对该赋值结果进行“或”运算,以确保该赋值中的元素评估为false
的数组不会中断for
循环。但是在这一点上,我认为整个for
循环线非常可怕。我一直都是这样做的:
for (var i = 0; i < 3; i++) {
var a = arrCars[i];
doStuff(a);
}
它并不简洁,但我总是更喜欢可读性而不是紧凑性。让minifier负责压缩事物。