JavaScript Professional Array 陣列

《JavaScript 高級程式設計》之二:陣列操作

《JavaScript 高級程式設計》第五章引用類別的陣列 (Array) 部份筆記。

1. 把陣列的 length 縮小,可以用來刪除陣列中的元素。

2. 陣列可以用 .isArray() 來判定。

3. JavaScript 中所有物件 (Object) 都有 toLocaleString()、toString() 和 valueOf() 方法。而對陣列來講,後兩個方法都會傳回將所有元素用逗號串接起來的字符串。toLocaleString() 經常也是傳回同樣的字符串,但不同的是它會去調用每一項的 toLocaleString() 方法,而不是 toString() 方法。

4. 若要使用逗號以外的方法串接字符串,可以使用 join()。傳入參數是分隔符,不傳入任何值則會用逗號作為分隔符。

5. 棧(Stack)方法:後進先出。
push():在陣列的最後加一個元素。
pop():從陣列最後取出一個元素,陣列長度減一。

6. 隊列(Queue)方法:先進先出。
push():同上。
shift():取出陣列第一項。
unshift():在陣列第一項前面插入元素,陣列長度加一。

7. 排序:
reverse():反向排序,當作數值排。
sort():正向排序,但是以字符串來排(調用 toString() ),例如:10 會在 5 的前面。但可以傳入比較函式作為參數。

若將比較函式裡的 1 跟 -1 換一下位置就會變成倒序排列,當然這樣不如使用 reverse()。

另外如果 valueOf() 傳回的是數值,比較函式可以更簡單:

8. concat():合併,產生新陣列,不影響原陣列。

9. slice():切割,產生新陣列,不影響原陣列。第一個參數是開始位置,第二個是結束位置,不包含這個位置上的值,沒有的話就是到陣列結束。

10. splice():拼接,接受兩個或以上的參數。第一個是開始位置,第二個是操作元素數量,第三個或以上是操作(插入或替換)內容。由於這些參數的組合,這個方法可以有三種用途:

  1. 刪除:splice(0,2)刪除前兩項,不難理解,從第一個元素(index 0)開始,操作 2 個元素,沒有操作內容(第三個或以上參數)就等於把它們變消失。
  2. 插入:splice(2,0,”red”,”green”)從 index 2 的位置開始,沒有操作元素數量等於不影響原有的元素,所以操作內容就要插入到 index 2 位置,而原本的元素就向後順移。
  3. 替換:splice(2,1,”red”,”green”)從 index 2 的位置開始,把一個元素刪除,再加入操作內容。也就說刪除一項,加入兩項。

11. indexOf():查找某元素的索引位置。接受兩個參數,第一個是要查找的元素,第二個(可為空)是開始位置。
lastIndexOf():從末尾開始找。

12. every():陣列中每一項都滿足某個條件則傳回 true。
some():只要某一項滿足某個條件就傳回 true。

filter():傳回所有符合某個條件的元素組成的陣列。

map():對每一項運行傳入函式,再將結果陣列傳回。

forEach():對每一項運行傳入函式,沒有傳回值。

13. reduce() & reduceRight():接受 4 個參數:前一個值,當前值,當前項索引和操作陣列。這個函式傳回的值會作為第一個參數自動傳給下一項,也就是作為下一項的前一個值。reductRight() 從最後一項開始,方向跟 reduce() 相反。

求陣列中所有值的和:

把 reduce() 改為 reduceRight() 也會得到同樣的結果。

書籍資料

中文書名:《JavaScript 高級程式設計》
英文書名:Professional JavaScript for Web Developers
原作者:Nicholas C.Zakas
譯者:李松峰、曹力

No comment yet, add your voice below!


Add a Comment

你的電子郵件位址並不會被公開。 必要欄位標記為 *

Comment *
Name *
Email *
Website

這個網站採用 Akismet 服務減少垃圾留言。進一步瞭解 Akismet 如何處理網站訪客的留言資料