数组 - 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. 第1句是var i = 0,它申请了一个名为i的变量并初始化为0,你甚至可以改成x或者a,这句代码在for循环开始只会执行一次,就是为了声明变量

  2. 第2句是i < 10,它比较i的值是不是小于10,如果小于就执行花括号里面的代码,执行完花括号的代码就会执行第3句

  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等,看你的程序逻辑需求了