影片中介紹7種方法,這裡節錄其他網站有介紹的3種
參考: 從ES6開始的JavaScript學習生活 陣列 迭代
這兩者使用的目的都非常近似於 for
迴圈
原本for
迴圈是這樣寫:
for (let i = 0; i < arrayName.length; i++){
console.log( arrayName[i] )
}
用forEach
會這樣寫:
arrayName.forEach( function ( item, index, array) {
item.price = item.cost + 100; // 直接對陣列內元素做操作,加入新property
console.log( item )
});
其中 index,array
不一定會使用到,array
指向前面呼叫forEach
的array
本身,即目前的arrayName
參考: MDN Array.prototype.forEach() 語法
最大特色就是都要return
,回傳成為新的陣列,舊的陣列不會被修改,更常被使用
let newArrayName = arrayName.map( function ( item, index, array){
// statements
return {
...item,
price: item.cost +100
}
});
console.log( newArrayName );
但它不適合放判斷式在內,因為會回傳固定長度,不符合的元素改成回傳 undefined
,
若要使用則用 filter
,filter return
的內容為布林值
let filterName = arrayName.filter( function(item, index){
if (item.cost > 10) {
return true
}
})
試寫了一個範例,一定要有return true
,
如果是
let filterName = people.filter((item, index) => {
if (item.cost == 60000) {
return false
}
})
剩下的 item 不會自動return true
用來兩兩相運算(比較也是運算的一種)的方法,也就是說至少要兩個值才能使用。但它多了一個參數值,代表前項。可以賦予一個初始值,若有賦予index
才會從 0 開始取,反之則從 1 開始取。
const aArray = [0, 1, 2, 3, 4]
const total = aArray.reduce(function(preValue, value, index, array){
console.log('preValue = ', preValue, ' value = ', value, ' index = ', index)
return pValue + value
})
console.log(aArray) // [0, 1, 2, 3, 4]
console.log(total) // 10
輸出結果會是這樣
preValue = 0 value = 1 index = 1
preValue = 1 value = 2 index = 2
preValue = 3 value = 3 index = 3
preValue = 6 value = 4 index = 4
[0, 1, 2, 3, 4]
10
注意到只有運算只有四行而不是五行,因為是從aArray[1]
往前取值。如果前面沒有值(aArray[0]
)又需要從 0 開始取的話,就要先給初始值。初始值位置在函式之後
const total2 = aArray.reduce(function(pValue, value, index, array){
console.log('pValue = ', pValue, ' value = ', value, ' index = ', index)
return pValue + value
}, 10) //初始值位置在這裡~~
console.log(total2) // 20
參考: MDN Array.prototype.reduce()
這部分的選擇性參數array
筆者也不明白是用來用在什麼情況的,大部分範例都沒有看到被使用,之後若有使用或查到再回來分享。另外ES6篇章暫時會跟著影片的進度告一段落