流程控制、迴圈
for 語句 (拆開一層陣列)
多個表達式也是可以的
for (let count = 0, total = 30 ;
count < 10 && total > 20 ;
count++, total--){
console.log(count, total)
}
//較差的寫法
for (let i=0 ; i < aArray.length ; i++) {
//statment
}
//較好的寫法
for (let i=0, len = aArray.length ; i < len; i++) {
//statment
}for...in 語句(單物件內部屬性使用)
for...of 語句(陣列內是物件)
for...of語句是新的ES6語句,可以用於可迭代物件上,取出其中的值,可迭代物件包含陣列、字串、Map物件、Set物件等等。
forEach
用於陣列,且可使用 value, index, array 參數。無回傳值。
用Object.keys取物件的key值轉為陣列,然後加上使用 forEach 方法
map (映射)
是比較常被使用的迭代方法,由於它並不會改變輸入陣列(呼叫map的陣列)的成員值,所以並不會產生副作用,最後回傳符合條件的新陣列。
reduce (歸納)
藉由一個回調(callback)函式,來作前後值兩相運算,然後不斷縮減陣列中的成員數量,最終回傳一個值。 參數包含以下:
accumulator: 前一個參數,如果是第一個陣列的話,值是以另外傳入或初始化的值
currentValue: 當前變數
currentIndex: 當前索引
array: 全部陣列
過濾與搜尋 filter 與 find/findIndex
filter(過濾)將陣列值進行過濾,最後回傳符合條件的新陣列。
新陣列。find與findIndex方法都是在搜尋陣列值用的, find在尋找到符合條件時會回傳值(value) findIndex則是回傳符合條件的索引值(index)
Array.prototype.find()
find() 與 filter() 很像,但 find() 只會回傳一次值,且是第一次為 true 的值。
常用於查詢是否有此值在陣列中
Array.prototype.every()
every() 可以檢查陣列是否符合所有條件,這僅會回傳一個值 true or false,可以用來檢查陣列中的內容是否符合特定條件。
Array.prototype.some()
some() 與 every() 非常接近,都是回傳 true or false,差異僅在 every() 需完全符合,some() 僅需要部分符合。
Last updated
Was this helpful?