ES6:高级数组函数,filter/map/reduce

78 阅读1分钟

filter

filter做一个过滤,会产生一个新的数组返回,不会对空数组进行操作

1 let arr = [1,2,3,4,5,6,7,8,9,10];

2 let new_arr = arr.filter((n) => { console.log(n) ; return n > 5})

3 console.log(new_arr,arr)

结果:new_arr = [6, 7, 8, 9, 10]

箭头函数里return每次返回false或者true, 如果判断结果为ture则添加,false则不添加到新的数组。

map

map() 方法返回一个新数组,数组中的元素为原始数组元素调用函数处理后的值

会产生一个新的数组,不会对空数组进行操作

let map_arr = new_arr.map(n => n * 2)

每次会将数组里的数据乘2,然后将结果返回增加到新的数组里,因为返回值是一行里,所以可以不用{}和return,可直接返回。

reduce

reduce() 方法接收一个函数作为累加器,数组中的每个值(从左到右)开始缩减,最终计算为一个值。其实就是循环每个值,然后进行一个操作,然后将结果返回到下一次循环是使用。

reduce() 对于空数组是不会执行回调函数的。

let map_arr = [12, 14, 16, 18, 20] // callbackfn: (previousValue: number, currentValue: number, currentIndex: number, array: number[]) => number): let reduce_sum = map_arr.reduce((preValue, curValue, curIndex) => { console.log(curIndex) // return preValue + curValue + curIndex return preValue + curValue }, 0) console.log(reduce_sum)