javascript 遍历的常用的遍历方法是 for 循环和 for-in,ES5 的时候加上了 forEach 方法(IE9 以下不支持)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
/****js原生遍历****/ //for循环遍历数组 for ( var i=0;i<arrTmp.length;i++){ console.log(i+ ": " +arrTmp[i]) }
//for-in遍历对象属性,i指代属性名 for ( var i in objTmp){ console.log(i+ ": " +objTmp[i]) }
//forEach遍历数组,三个参数依次是数组元素、索引、数组本身 arrTmp.forEach( function (value,index,array){ console.log(value+ "," +index+ "," +array[index]) })
for-in 循环是为了遍历对象而设计的,事实上 for-in 也能用来遍历数组,但定义的索引 i 是字符串类型的。如果数组具有一个可枚举的方法,也会被 for-in 遍历到,例如:
1 2 3 4 5 6 7 8 9 10
//for-in遍历数组 for ( var i in arrTmp){ console.log(i+ ": " +arrTmp[i]) } //for-in会遍历到数组的属性 arrTmp.name= "myTest" ; for ( var i in arrTmp){ console.log(i+ ":" +arrTmp[i]) } //输出 0:value1 1:value2 2:value3 name:myTest
for 循环和 for-in 能正确响应 break、continue 和 return 语句,但 forEach 不行。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
//只会输出value1 value2 for ( var i=0;i<arrTmp.length;i++){ console.log(i+ ": " +arrTmp[i]); if (i==1){ break ; } }
//会输出value1 value2 value3 arrTmp.forEach( function (value){ console.log(value+); if (value==1){ return ; } })
ES6 中,新增了 for-of 遍历方法。它被设计用来遍历各种类数组集合,例如 DOM NodeList 对象、Map 和 Set 对象,甚至字符串也行。官方的说法是: