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 | |