javascript中的循环方法总结

168 阅读3分钟
目录:
  • for
  • for...in
  • while
  • do...while
  • forEach
  • for...of

第一种:for循环( 数组 )

循环最常用的地方是利用索引来遍历数组,通过初始条件、结束条件和递增条件来循环执行语句块:

var list = ["q","w","e","r"]
for(var i=0; i<list.length; i++){
    console.log(i) // 打印出来是1,2,3,4
    console.log(list[i])  //打印出来是q,w,e,r
}

第二种:for...in循环( 对象/数组 )

for...in循环是for循环的一个变体,可以把一个对象的所有属性遍历出来,包括自身的和继承的可枚举属性(不含Symbol属性)

对象:

var lilei ={
    "name": "lilei",
    "age": 18,
    "sex": 1
}
for(var key in lilei){
    console.log(key) //打印出来的是"name","age","sex"
    console.log(lilei[key])  //打印出来的是"lilei",18,1
}

数组:

var list = ["q","w","e","r"]
for(key in list){
    console.log(key)  //打印出来的是"0","1","2","3"
    console.log(list[key])  //打印出来的是 "q","w","e","r"
}

需要注意的是这里的0123是String而不是Number

第三种: while循环

while循环只有一个判断条件, 当条件满足,就不断循环,条件不满足,就退出循环,比如我们要计算10以内所有奇数的和

var n=0
var x=9
while(x>0){
    n=n+x
    x=x-2
}
console.log(n)  //打印出来的结果是25=9+7+5+3+1

第四种: do...while循环

do...while循环和while循环唯一的区别在于,它是在循环结束后再判断条件,也就是说do...while循环最少也会执行一次

var n=0
do{
    n=n+1
}while(n<10)
console.log(n)  //打印出来的是10

第五种: forEach循环(数组)

forEach让数组的每一项都执行一次给定的函数,语法:

array1.forEach(callbackfn[, thisArg])
参数 定义
array1 必选。一个数组对象。
callbackfn 必选。最多可以接受三个参数的函数。对于数组中的每个元素,forEach 都会调用callbackfn 函数一次。
thisArg 可选。 callbackfn 函数中的 this 关键字可引用的对象。如果省略 thisArg,则 undefined 将用作 this 值。

callbackfn 参数必须是一个对象,否则会报错

备注:
  1. 对于数组中出现的每个元素,forEach 方法都会调用 callbackfn 函数一次(采用升序索引顺序)。将不会为数组中缺少的元素调用回调函数。
  2. 除了数组对象之外,forEach 方法可由具有 length 属性且具有已按数字编制索引的属性名的任何对象使用。

回调函数的语法:

function callbackfn(value, index, array1)

实例(值value, 索引index):

function ShowResults(value, index, ar) {
    document.write("value: " + value);
    document.write(" index: " + index);
    document.write("<br />");
}

var letters = ['ab', 'cd', 'ef'];

letters.forEach(ShowResults);

或者:

var list = ["q","w","e","r"]
list.forEach(function(v,index){
   console.log(v) 
   console.log(index)
})

第六种: for...of(ES6新特性,补充了for...in的不足)

for...in循环出的是key,for...of循环出的是value 要注意它的兼容性还不够

** 例子:**

var list = ["q","w","e","r"]
for(key of list){
    console.log(key)  //打印出来的是"q","w","e","r"
}

for…of不能循环普通的对象,需要通过和Object.keys()搭配使用