假如要按如下方法遍歷一個數(shù)組:
let arr = [2, 3, 5, 6, 8];
for(let i=0,len=arr.length;i<len,i++){
console.log(arr[i];
}
這樣每次循環(huán)還要和len
比較程梦,時(shí)間復(fù)雜度是O(n+1)点把。可以使用如下方式:
for(let i=0,item;item=arr[i++];){ // 一定要注意最后面的分號屿附,不要省略
console.log(item)
}
上面的方法利用了可迭代數(shù)據(jù)本身的特性愉粤,時(shí)間復(fù)雜度是O(n)。
通過數(shù)組arr
的keys()
方法可以獲取一個迭代器對象:item=arr.keys()
拿撩,不斷執(zhí)行item.next()
衣厘,可以獲得如下結(jié)果:
value
表示數(shù)組的索引,done
表示是否遍歷完压恒。因此在上面的for循環(huán)中影暴,當(dāng)遍歷完數(shù)組的之后,返回undefined
探赫,結(jié)束循環(huán)型宙。