JavaScript 筆記 - 陣列方法
forEach 很好用,但是其他陣列方法也很不賴!
範例資料:
1 |
|
forEach
forEach 會針對陣列中的每一個元素進行操作。
1 |
|
陣列所元素皆傳入函式執行一次,但是不會回傳任何值(reutrn
沒有作用),換言之,forEach 不會產生新陣列。
callback 函式可傳入以下參數:
item
目前元素index
目前元素索引(選用)array
陣列本身(選用)
範例:依序印出人物資訊
1 |
|
map
map 可以把原陣列所有元素進行轉換,並以新的資料形式在新陣列中呈現。
1 |
|
會建立一個新陣列,內容為原陣列的每一個元素運算、轉換後回傳的值,若不回傳,新陣列所有元素皆為 undefined
。
callback 函式可傳入以下參數:
item
目前元素index
目前元素索引(選用)array
陣列本身(選用)
範例:將所有人的年齡加五歲
1 |
|
filter
filter 就如字面上的意思,可以用來篩選陣列中符合條件的元素。
1 |
|
會建立一個新陣列,內容為原陣列中所有符合條件的元素。
callback 函式可傳入以下參數:
item
目前元素index
目前元素索引(選用)array
陣列本身(選用)
範例:篩選出年齡 18 歲以上的人
1 |
|
find
find 與 filter 類似,差別在於 find 只會找到陣列第一筆符合條件的元素。
1 |
|
會回傳一個元素,該元素是陣列中第一個符合條件的元素,若都不符合條件則回傳一個 undefined
。
callback 函式可傳入以下參數:
item
目前元素index
目前元素索引(選用)array
陣列本身(選用)
範例:找出第一個女生
1 |
|
every
every 可以檢測陣列是否全部元素都符合條件。
1 |
|
會回傳一個 boolean
,陣列中的元素必須全部符合條件,最終才會回傳 true
,否則會回傳 false
。
callback 函式可傳入以下參數:
item
目前元素index
目前元素索引(選用)array
陣列本身(選用)
範例: 判斷是否全部都是男生
1 |
|
some
some 與 every 概念類似,差別在於 some 用來檢測陣列是否有任何一個(或以上)元素符合條件,兩個方法從字面上也可以區別。
1 |
|
最終會回傳一個 boolean
,陣列中只要有任何一個元素符合條件,最終就回傳 true
,否則回傳 false
。
callback 函式可傳入以下參數:
item
目前元素index
目前元素索引(選用)array
陣列本身(選用)
範例: 判斷是否有未成年的人
1 |
|
reduce
reduce 與其他陣列方法差異較大,可以將陣列中所有元素累計運算,最終回傳一個累計的結果。
1 |
|
接收一個 callback 函式與一個起始值作為參數,callback 函式可傳入以下參數:
accumulator
前一個元素currentValue
目前元素currentIndex
目前元素索引(選用)array
陣列本身(選用)
第二個參數為起始值 initialValue
(選用),若沒有給定起始值,accumulator
預設會是陣列第一個元素,currentValue
則預設是第二個;反之,如果有給定起始值,accumulator
就會是給定的起始值,而 currentValue
會是陣列第一個元素。
callback 函式每次呼叫時,會把 accumulator
與 currentValue
相加,再把相加的值再次回傳入 accumulator
, 不斷反覆進行累計,換言之,accumulator
除了起始值之外,每次運算的值都是前一次相加累計的值。
範例一:不指定起始值
1 |
|
範例二:指定起始值為 10
1 |
|
範例三:加總範例資料中所有人的年齡
1 |
|