数组 - for循环 ¶
作者:KK
发表日期:2016.2.25
for循环用于遍历数组,也就是扫描数组,先看看代码:
for(var i = 0; i < 5; i++){
alert('你好');
}
上面代码运行后,会循环提示5次"你好",这就是典型的for循环代码
这个代码主要先理解一下for的括号里面的含义,它里面有var i = 0; i < 10; i++
,里面有;
号,别忘了;
号是代码语句的分隔符哦,所以这里面是有3条语句的
第1句是
var i = 0
,它申请了一个名为i的变量并初始化为0,你甚至可以改成x或者a,这句代码在for循环开始只会执行一次,就是为了声明变量第2句是
i < 10
,它比较i的值是不是小于10,如果小于就执行花括号里面的代码,执行完花括号的代码就会执行第3句执行完一次花括号代码后执行第3句
i++
,那么如果是第1次,就是从0变成1了,加完后又回去执行上面第2句,如果比较结果为true的话又执行花括号的..如此循环
下面我来个更清晰的代码让你看清楚for循环的步骤:
for(var i = 0; i < 3; i++){
if(i > 0){
alert('又一次循环了,i++后的值是' + i +',刚才i < 3比较成立所以进入了循环');
}else{
alert('第1次循环,i的值是' + i);
}
alert('你好');
alert('即将完成一次for循环,要执行i++了');
}
alert('i++后退出循环了,因为i的值是' + i + '所以i < 3并不成立');
所以呢其实如果你要重复做10次事情的话,只要这样就行了:
for(var i = 0; i < 10; i++){
alert(i);
}
起码有了for循环之后,你就不用写这样的代码来alert数字0到9了是不是?
alert(0);
alert(1);
alert(2);
alert(3);
alert(4);
alert(5);
alert(6);
alert(7);
alert(8);
alert(9);
for循环其实一般用来扫描数组 ¶
var nameList = ['小明', '小红', '小东'];
for(var i = 0; i < nameList.length; i++){
alert(nameList[i]);
}
看不懂为什么会提示3个人的名字的话,我再来一次"清晰的代码"吧
var nameList = ['小明', '小红', '小东'];
for(var i = 0; i < nameList.length; i++){
var tips1 = '第' + (i + 1) + '次循环';
var tips2 = ',现在i的值是 ' + i;
var tips3 = ' ,那么第 ' + i + ' 个数组元素的值自然是 ' + nameList[i];
alert(tips1 + tips2 + tips3);
}
理解实际应用 ¶
那你可能会想,上面的代码用for循环来将数组里的3个名字逐一提示,我直接写下面这样的代码不也成吗?
var nameList = ['小明', '小红', '小东'];
alert(nameList[0]);
alert(nameList[1]);
alert(nameList[2]);
这样当然是可以将3个名字提示出来啦,但是下面这个代就不一定能模仿成功咯
我下面的需求就是给出2个班级的同学名称,要求用showNames函数将两个班级的同学名字都全部提示出来,我的代码是这样的,你的呢?
var class1Names = ['小明', '小红', '小东', '小芳']; //班级1的同学名称,有4人
var class2Names = ['大明', '大红', '小东']; //班级2的同学名称,有3人
showNames('班级1', class1Names); //提示所有班级1的同学名称
showNames('班级2', class2Names); //提示所有班级2的同学名称
function showNames(className, names){
alert('下面是' + className + '的' + names.length + '位同学名称:')
for(var i = 0; i < names.length; i++){
alert(names[i]);
}
}
起码,只要给我一个班级同学的名称数组就可以了,用for循环就扫描了全部,不用for循环你实现不了自动扫描一个班级,你必须手动添加alert代码
更多实际的应用理解,后面进入实践后就能更加深刻认知到了
修改步进值 ¶
什么是步进值呢,就是每次循环后,那个i变量
的步进啦,默认一般都是i++
,所以它是步进1的,其实可以步进2或更多,看你怎么算了
下面的例子使用步进2来提示1到9之间的单数
for(var i = 1; i <= 10; i += 2){
alert(i);
}
其中上面var i = 1
就连初始值都修改了,这样就跟0无关了嘛,开始从1数,看看i是否小于等于10
(跟前面的例子 小于10 有区别)
步进2的时候,初始时i是1,经历一次循环后+2变成了3,所以就直接提示3,再一次循环后+2得5,如此下去,那么2,4,6这些数就被跳过了,你还能+3,+4等,看你的程序逻辑需求了