循环(迭代)

1. for 循环     (循环代码块一定的次数 ,常用于循环数组

for (var i=0; i<5; i++)
  {
  console.log('hello');
  }
优化算法:
for (var i = arr.length - 1; i >= 0; i--) {
    // do something...
}
相关文章

2. for in 循环   (循环遍历对象的属性

(for in 语句遍历对象所有属性,包括原型中的属性(使用 hasOwnProperty 和 typeof 筛选)更好的遍历对象方式,创建固定的字面量对象,使用for循环,直接取所需要的数据。)

var person={fname:"John",lname:"Doe",age:25};

for (x in person)
  {
  txt=txt + person[x];
  }

3.  while 循环  (当指定的条件为 true 时循环指定的代码块)

while (i<5)
  {
  x=x + "The number is " + i + "<br>";
  i++;
  }

cars=["BMW","Volvo","Saab","Ford"];
var i=0;
for (;cars[i];)
{
document.write(cars[i] + "<br>");
i++;
}

4.  do/while 循环  (当指定的条件为 true 时循环指定的代码块)

do
  {
  x=x + "The number is " + i + "<br>";
  i++;
  }
while (i<5);

5.扩展

5.1 ECMA5后引入  forEachmap

兼容低版本实现:

if (typeof Array.prototype.forEach != "function") {
  Array.prototype.forEach = function() {
    /* 实现 */
  };
}
eg:
[1,2,3].forEach(function(v,i){console.log(v)})

[1,2,3].map(function(v,i){console.log(v)})

扩展:

区别:

arr.forEach(function(v,i){console.log(v,i);return v*v;})     返回 undefined

arr.map(function(v,i){console.log(v,i);return v*v;})        返回  [1, 4, 9]

相同点:es5 引入,兼容性不好,同时不支持中断,即break continue 等方法;

 

5.2 jq提供 $.each  $(obj).each

$.each([1,2,3],function(i,v){console.log(v)})

$([1,2,3]).each(function(i,v){console.log(v)})

6.switch  // 从句具有作用域

switch (i) {
  case 20: alert("20");
    break;
  case 30: alert("30");
    break;
  case 40: alert("40");
    break;
  default: alert("other");
}

通用:

 对象遍历   

Object.keys()
数组遍历
forEach

 


posted @ 2018-08-10 19:02  justSmile2  阅读(232)  评论(0编辑  收藏  举报