假如要按如下方法遍历一个数组:
let arr = [2, 3, 5, 6, 8];
for(let i=0,len=arr.length;i<len,i++){
console.log(arr[i];
}
这样每次循环还要和len
比较,时间复杂度是O(n+1)。可以使用如下方式:
for(let i=0,item;item=arr[i++];){ // 一定要注意最后面的分号,不要省略
console.log(item)
}
上面的方法利用了可迭代数据本身的特性,时间复杂度是O(n)。
通过数组arr
的keys()
方法可以获取一个迭代器对象:item=arr.keys()
,不断执行item.next()
,可以获得如下结果:
value
表示数组的索引,done
表示是否遍历完。因此在上面的for循环中,当遍历完数组的之后,返回undefined
,结束循环。