练习:循环和流程控制
来自CloudWiki
例1: in 关键字
for (var i in a){} 循环+数组结构 还会遍历到非数字键部分
var a=[1,'a3',5]; a.t=true;//在数组a中增加一个值true,索引为t,用此种方法添加数据不影响数组的长度 console.log(a); for (var i in a){ console.log(i,a[i]);//依次打印出数组a索引和值 }
例2
更安全的写法 for (var i=0;i<a.length;i++){}
var a=[1,'a3',5]; a.t=true; for (var i=0;i<a.length;i++){ console.log(i,a[i]); }//不改变原来的数组
例3 while循环
或者使用while
var a=[1,'a3',5]; var i=0; while (i<a.length)// { console.log(i,a[i]); i++; }
例4 正向/逆向遍历
数组的for each方法遍历
var colors=['red','green','blue']; colors.forEach(function(color){ console.log(color); });
例5 数组特点
观察下列循环的区别
一.
var a=[1,2,,3,4];//循环时不跳过索引为2的数,显示为undefined for (var i=0;i<a.length;i++){ console.log(i,a[i]); }
二.
var a=[1,2,,3,4];//循环时跳过了索引为2的值 for (var i in a){ console.log(i,a[i]); }
例6 数组切片
var a=[1,2,,3,4]; a.slice(2)//从索引为2的位置开始切片,切出[undefined,3,4]
输出:
[ null, 3, 4 ]
例7 循环对对象的操作
var b={1:2,3:'4'}; for(var i in b){ console.log(i,b[i]); }//遍历出b的索引和值
例8 循环对字符串的操作
var s='string'; for(var i in s){ console.log(i,s[i]); }//依次打印出字符串中的每个字符 var s='string'; for(var i=0;i<s.length;i++){ console.log(i,s[i]); }//依次打印出字符串中的每个字符
习题
1-2+3-4……+99-100= 输出表达式 输出完整的表达式以及值
思路 : 循环 分别建立2个数组 (1 3 5..99 ) - ( 2 4 6..100)
var s1=0; var s2=0; for(var i=1;i<=99;i=i+2){ s1=s1+i; //奇数项求和 } for (var i = 2; i <= 100; i = i + 2) { s2 = s2 + i; //偶数项求和 } console.log(s1-s2); var a=3; if(a%2===0) console.log('偶数');
思路:字符串拼接 + 最前面多了一个符号 减号如何操作?
var s='1'; for(var i=2;i<=10;i++){ if(i%2===0) s=s +'-'+i; else { s = s + '+' + i;} } console.log(s)
total累加 从1开始,于是上述代码可以改为
var s = '1'; var total = 1; for (var i = 2; i <= 100; i++) { if (i % 2 === 0) { s = s + '-' + i; total -= i; // total = total -i } else { s = s + '+' + i; total += i; } } s = s + '=' + total; console.log(s)