数组遍历有很多,这里先讲下最常用的for
1. 普通的for
var arr1 =[1,2,3,4,5,6] // for 循环遍历 中途可以用break跳出 for(var i=0;i<arr1.length;i++){ if(i>2) break; console.log(arr1[i]) }
//当for循环中存在异步时; for (var i = 0; i < arr1.length; i++) { setTimeout(function(){ console.log(i) //会打印 6次 6 },100) }
2. for... in
// 会获取数组的下标,也可以用break跳出,但是存在异步时也会存在上述问题 for (let index in arr1) { if (index > 2) break console.log(arr[index]) }
3. for ... of
// 会获取数组中元素,可以看成普通for循环的简写,也可以用break跳出,但是存在异步时也会存在上述问题 for (let item of arr1) { if (item > 1) break console.log(item) }
那么上述的异步问题怎么解决呢 ?
for (var i = 0; i < arr1.length; i++) { // 这里是闭包原理 抽时间详细讲讲 (function (a) { //自执行函数 setTimeout(function () { console.log(a) // 1,2,3.... },100) }(i)) }
总结:for 循环都支持中途跳出,用法比较简单易懂。当然数组还有很多遍历的方法,下篇会接着说