迭代器(iterator)是一種物件,它能夠用來遍歷標準模板庫容器中的部分或全部元素,每個迭代器物件代表容器中的確定的位址。迭代器修改了常規指標的介面,所謂迭代器是一種概念上的抽象:那些行為上像迭代器的東西都可以叫做迭代器。然而迭代器有很多不同的能力,它可以把抽象容器和通用演算法有機的統一起來。
jquery中的迭代器 (先index,後value)
var obj =
;var arr =[1
,2,3
,5];
$.each
(obj,
function
(index, value));
$.each
(arr,
function
(index, value)
);
underscore中的迭代器var obj =
;var arr =[1
,2,3
,5];
_.each
(obj,
function
(value, index));
_.each
(arr,
function
(value, index)
);
es5中的迭代器(foreach只能遍歷陣列,不能遍歷物件)// 遍歷陣列
var arr =[1
,2,3
,5];
arr.
foreach
(function
(value, index, arr)
);
for in 遍歷(可以是物件,可以是陣列。但是不應該用於遍歷陣列,下面會講到為什麼不應該用於遍歷陣列)var obj =
;var arr =[1
,2,3
,5];
for(
var i in obj)
for(
var i in arr)
for 只能遍歷陣列(不能遍歷物件)var arr =[1
,2,3
,5];
for(
var i =
0; i < arr.length; i++
)
封裝乙個遍歷的函式(也就是相當於實現了foreach)object.prototype.
myeach
=function
(fn)
}else
}// for(var i in this)
}// this 也被遍歷了
object.
defineproperty
(object.prototype,
'myeach',)
// 遍歷陣列
var arr =[1
,2,3
,5];
arr.
myeach
(function
(value, index, arr));
var obj =
;obj.
myeach
(function
(value, index, obj)
);
for in 能實現物件和陣列的遍歷,因為不建議使用for in遍歷陣列,所以是物件的話,使用for in。是陣列的話,使用for遍歷。
for of可以遍歷陣列,但是不能使用索引值
我們可以在外部定義索引值,在內部修改索引值即可使用
for in可以遍歷陣列,索引值是字串
官方文件是這樣解釋的:for...in
不應該用於迭代乙個array
,其中索引順序很重要。
陣列索引只是具有整數名稱的列舉屬性,並且與通用物件屬性相同。不能保證for ... in
將以任何特定的順序返回索引。for ... in
迴圈語句將返回所有可列舉屬性,包括非整數型別的名稱和繼承的那些。
因為迭代的順序是依賴於執行環境的,所以陣列遍歷不一定按次序訪問元素。因此當迭代訪問順序很重要的陣列時,最好用整數索引去進行for
迴圈(或者使用array.prototype.foreach()
或for...of
迴圈)。
迭代器python Python 迭代器總結
迭代器是python乙個強大的功能,它可以記錄被迭代 物件 的位置,迭代器物件從集合的第乙個元素開始訪問資料,直到所有資料訪問結束,迭代器有兩個基本函式iter 和next iter 用來生成迭代器 next 用來返回迭代器的下乙個資料 python內建模組itertools,提供了很多非常有用的函...
STL總結 迭代器
所有容器都定義了各自的迭代器 迭代器是乙個物件,它的工作是在容器中挑選元素,並將其呈現給迭代器使用者。迭代器分類 input迭代器 向前讀取 istream output迭代器 向前寫入 ostream forward迭代器 向前讀取和寫入 bidirectional迭代器 向前和向後讀取和寫入 l...
迭代器模式總結
1 問題 在物件導向的軟體設計中,經常會遇到一些聚集物件,按一定的順序的遍歷訪問問題,這個遍歷演算法究竟應該由誰來實現呢,聚集物件本身?這樣聚集物件承受了過多的功能,不僅要維護聚集物件內的元素,還要提供遍歷自身的介面,而且由於遍歷狀態儲存的問題,不能對同乙個容器物件同時進行多個遍歷,這不符合單一職責...