最近逛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; })
上面这三个函数都不会改变原数组。回调函数