最近逛freecode看到了這兩個數組的方法,傻傻的理不清,趕忙總結一波。javascript
map(callback)函數會迭代數組中的全部元素,並根據callback進行處理,最後會返回一個新數組。而回調函數callback支持多個參數包括元素的值val,數組arr以及數組下標index。java
好比咱們若是要將數組的每一項平方,就能夠用以下代碼實現:數組
var arr = [1,2,3]; var after = arr.map(function(val){ return val*val; })
而且若是咱們console.log(arr)會發現arr沒有改變,這也證明了map方法不會改變原數組。 函數
reduce(function(previousVal, currentVal){},[origin])相比而言看起來比較複雜,而且特殊的是它還有一個可選的參數。其實orgin表示的是previousVal的初值,而previousVal就至關於一個累加器,currentVal表示數組的當前值。若不設置origin的值,previousVal就爲數組第一項的值。反之previousVal爲origin的值code
若是咱們要將數組全部項累加,除了用for循環咱們還能夠使用reduce函數。blog
var arr = [1,3,4,5]; arr.reduce(fucntion(previousVal,currentVal){ return previousVal+currentVal; });
最後再扒一扒filter函數,它能夠用來過濾指定條件的項。即return爲true的被留下,return爲false的被過濾掉。ip
var arr = [1,3,6,78,4]; var new = arr.filter(function(val){ return val < 4; })
上面這三個函數都不會改變原數組。回調函數