练习:循环和流程控制

来自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)