導航:首頁 > 編程語言 > js迭代

js迭代

發布時間:2025-03-29 05:10:30

『壹』 js迭代和遍歷有什麼區別

迭代 iteration

在編程中,迭代是一種循環處理一組數據的過程。通常,迭代涉及到訪問一個集合中的元素,這可以通過對數組使用循環實現,比如在JavaScript中使用for循環遍歷數組元素。迭代的核心在於按順序訪問每個元素,直到遍歷完集合。

迭代的核心工具是迭代器,它允許在不同類型的集合上執行循環操作,而不僅僅局限於數組。迭代器在現代JavaScript中以ES6引入的`iterator`介面為標志。這意味著,無論是鏈表、集合還是其他非數組類型的容器,只要實現`iterator`介面,都可以被迭代。

迭代器提供的便利性在於它簡化了訪問和處理集合元素的邏輯,使得編寫代碼更加靈活和易於理解。

迭代 iteration

至於遍歷 traversal,這是一個更廣泛的概念,不僅僅局限於編程領域。在數據結構和演算法中,遍歷通常指訪問數據結構(如樹、圖或集合)中的每個節點或元素。在JavaScript中,遍歷可以指的是訪問DOM元素,或者訪問非數組數據結構中的元素。

樹遍歷 tree traversal

在涉及到樹結構的數據時,遍歷指的是按照一定的順序訪問樹中的每個節點。常見的樹遍歷方式包括前序遍歷、中序遍歷和後序遍歷。在DOM樹中,遍歷通常指從根節點開始,按照某種順序遍歷所有子節點。

總結,迭代側重於對數據集合的順序訪問,而遍歷則是一個更廣泛的概念,包括但不限於對數據結構的訪問。迭代通常與迭代器關聯,而遍歷可以應用於多種數據結構和場景。在實現上,迭代與遍歷都可以通過編程語言提供的工具和庫來簡化。

『貳』 詳解JS中常見的5 種 for 循環

for 循環在平時開發中使用頻率最高的,前後端數據交互時,常見的數據類型就是數組和對象,處理對象和數組時經常使用到 for 遍歷,因此需要徹底搞懂這 5 種 for 循環。它們分別為:

1、for
for 循環是出現最早,也是應用最普遍的一個遍歷,能夠滿足絕大多數的遍歷。可以遍歷 數組、對象、字元串,示例:

2、for ... in
for ... in 是在 ES5 中新增的,以任意順序迭代一個對象的除Symbol以外的可枚舉屬性,包括繼承的可枚舉屬性。

3、for ... of
for ... of 語句在可迭代對象(包括 Array、Map、Set、String、TypedArray、arguments 對象等等)上創建一個迭代循環,調用自定義迭代鉤子,並為每個不同屬性的值執行語句。

4、for await...of
創建一個循環,該循環遍歷非同步可迭代對象以及同步可迭代對象,包括內置的 String、Array,類數組對象(arguments 或 nodeList),TypedArray, Map, Set 和用戶定義的非同步/同步迭代器。
它使用對象的每個不同屬性的值調用要執行的語句來調用自定義迭代鉤子。
類似於 await 運算符一樣,該語句只能在一個async function 內部使用

5、forEach
forEach 是ES5版本發布的,按升序為數組中含有效值的每一項執行一次回調函數,那些已刪除或者未初始化的項將被跳過(例如在稀疏數組上),一般認為是 普通for循環 的加強版。

6、map
遍歷時可以返回一個新數組,新數組的結果是原數組中每個元素都調用一次提供的函數後返回的值。

1、使用場景差異
for循環是最早最原始的循環遍歷語句,for 內部定義一個變數,按照條件進行循環遍歷,通常是數組的長度,當超過長度時就停止循環,一般遍歷的都是數組或類數組。
遍歷對象時,由於對象沒有長度,所以使用 Object.keys() 獲取對象的所有屬性,以數組形式返回。
for / in主要是用來遍歷對象上的可枚舉屬性,包括原型對象上的屬性,按任意順序進行遍歷,遍歷對象時獲取到的是屬性的鍵值,遍歷的是數組,數組的下標當做鍵值。
for / of用於遍歷可迭代對象的數據,包括 Array、Map、Set、String、TypedArray、arguments 對象等等。
for await...of用於遍歷非同步可迭代對象,該語句只能在一個async function 內部使用。
forEach 是 for 的加升級版,使用更簡單,攜帶參數更多,但本質還是數組的循環,每個元素都執行一次回調,不會改變原數組。
map是給原數組每個元素都執行一次回調,返回一個新數組,不會改變原數組。
2、功能差異
forEach、map 不支持跳出循環,其他不支持。
for await ... of 能夠支持非同步操作,其他的不支持。
對於純對象的遍歷, for ... in 枚舉更方便。
對於數組遍歷,如果不需要索引,可以直接使用 for...of 獲取值,還可支持 break 或 return ;如果還需要索引,使用 forEach 更適合,但不支持 return。
如果是一個數組映射成另一個數組,使用 map 最合適。
3、性能差異
在測試環境、測試數據條件一致的情況下,性能排序為:
for > for of > forEach > map > for in。
for 因為沒有額外的函數調用和上下文,所以性能是最快的。
for ... of 具有 iterator 介面的數據結構,可以使用它來迭代成員,直接讀取鍵值。
forEach 是 for 的語法糖,還有許多的參數和上下文,因此會慢一些。
map 因為它返回的是一個等長的全新數組,數組創建和賦值產生的性能開銷較大。
for...in 性能最差,因為需要列舉對象的所有屬性,有轉化過程,開銷比較大。

在項目開發中,我們應該根據實際需求,去選擇一個合適的 for 遍歷。以下是一些使用建議:
如果需要把數據映射成另外一個數組,如變成對應布爾值,推薦使用 map ,不會修改原數組,使用語法簡單。
數組遍歷時,可以使用 for 、forEach 或 for...of。
遍歷的是純對象時,推薦使用 for ... in 。
如果是需要對迭代器遍歷,推薦使用 for ... of。
如果是在數組中篩選符合條件的數組,使用 fillter 。

閱讀全文

與js迭代相關的資料

熱點內容
怎麼讓word文檔不顯示標記及修改的狀態 瀏覽:980
ug中zg螺紋用什麼編程 瀏覽:306
招標文件裡面的格式 瀏覽:498
shell腳本生成json 瀏覽:121
會編程對數控有什麼幫助 瀏覽:606
ps導出成矢量文件 瀏覽:849
公司緊急文件分有哪些 瀏覽:148
520版本萬能鑰匙 瀏覽:849
手機點餐系統app哪個好 瀏覽:681
scratch編程如何讓角色跟著線走 瀏覽:107
ppt中圖片的數據如何編輯 瀏覽:532
手機只讀文件有哪些 瀏覽:61
微信專清怎麼老是顯示沒有文件 瀏覽:1
套索工具調整邊緣羽化 瀏覽:112
矩陣式鍵盤去抖動程序 瀏覽:794
linux測試程序tps 瀏覽:185
粘滯鍵的文件路徑 瀏覽:936
博客營銷教程下載 瀏覽:931
rfid密碼修改器 瀏覽:29
怎麼在qq上新建文件夾 瀏覽:566

友情鏈接