在 JavaScript 中迭代數組的多種方法:for 循環、而循環、for-of 循環、映射()、forEach()、過濾器() 和 reduce()。
在本文中,我們將看到迭代數組的不同方法,還將介紹它與其他數組的不同之處。希望你們對數組有一個清晰的理解。但是在進入主要部分之前,讓我回顧一下數組的基礎知識。
什么是數組?
數組是一種復雜的數據結構,用于按順序存儲相同數據類型的元素。數組是靜態的,在代碼中初始化數組時應提及數組的大小。但是JavaScript數組與傳統數組不同,傳統數組是動態的 - 這意味著在初始化時無需提及數組的大小,并且可以將任意數量的元素推送到數組中。JavaScript數組可以存儲任何數據類型的值 - 這意味著數組中的元素可以是任何大小的,即沒有限制元素應該是相同的類型。
我們為什么要迭代數組?
由于數組以順序方式存儲元素,因此我們需要遍歷或迭代數組以從中找到所需的元素。通常,遍歷需要 O(n) 時間復雜度。我們還將遍歷數組以更改數組的元素或訪問數組中的每個元素。
數組遍歷的不同技術
有幾種方法可以遍歷數組。它們是:
用于循環
而循環
for-for 循環
地圖()
foreach()
過濾器()
減少()
1. 用于循環
這是迭代數組的基本技術之一。for 循環可用于通過使用數組的長度遍歷數組。在for循環中,應該提到三個條件。
起動基本條件
結束條件
迭代條件(通常遞增或遞減)
例:
2. 同時循環
while 循環的工作方式類似于 for 循環,但它需要一個條件,它將一直運行到給定條件為 true。如果條件變為 false,則 while 循環中斷,控件移動到循環外的下一個語句??梢栽?while 循環中使用繼續和中斷語句。
例:
3. for-for 循環
for-of 循環類似于 Python 中的 for-in 循環,其中我們使用“in”作為關鍵字,而在 JS 中,“in”已被替換為“of”。它用于迭代數組,它可以直接訪問元素而無需索引,因為它給出了元素,并且不像實際的“for循環”那樣索引。
例:
當我們只需要訪問元素而不需要操作它們時,可以使用它,因為我們無法訪問元素的索引。
4. 地圖()
map() 是一個數組方法,用于按順序對數組中的每個元素應用函數或所需操作,結果數組將作為結果返回。它調用回調函數,回調函數有三個參數值、索引和數組?;卣{函數返回的元素將存儲在具有相同索引的數組中。這似乎就像從一個數組中獲取元素并操作它們并將它們存儲在新數組中。
示例:用于操作數組
5. 對于每()
forEach() 也是一個數組方法,與 map() 函數非常相似,而唯一的區別是 forEach() 方法不返回任何內容。這將返回未定義。使用 map() 方法實現的函數也可以使用 forEach() 實現,但手動更改新數組中的元素需要額外的努力。
例:
6. 過濾器()
filter() 方法類似于 map() 方法,但回調的返回類型是布爾值。方法返回一個數組。它用于篩選僅包含滿足給定回調條件的元素的數組。不滿足給定條件的元素不會添加到將返回的數組中。如果所有元素都不滿足回調中定義的條件,則返回值將為空數組而不是 null。
示例:過濾數組中的奇數
7. 減少()
解釋 reduce() 函數的一種簡單方法是用一個簡單的例子來解釋它??紤]一種向數組中添加元素的算法。通常,我們將定義一個名為 sum 為 0 的變量,并將所有元素添加到 sum 變量中,并將返回它。
我們可以通過簡單地使用如下的 reduce() 函數來實現上述目標:
reduce() 函數可以以多種方式用于實現不同的事情,我無法在一篇文章中解釋所有的事情。