filter-map-reduce 高级数组函数

filter:

创建一个新的数组,新数组中的元素是通过检查指定数组中符合条件的所有元素。

【注意】filter() 不会对空数组进行检测。

     filter() 不会改变原始数组。

map:

返回一个新数组,数组中的元素为原始数组元素调用函数处理后的值。

按照原始数组元素顺序依次处理元素。

【注意】 map() 不会对空数组进行检测。

    map() 不会改变原始数组。

reduce:

接收一个函数作为累加器,数组中的每个值(从左到右)开始缩减,最终计算为一个值。

可以作为一个高阶函数,用于函数的 compose。

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

下面是一个利用filter,map,reduce各个语法进行操作的实例

const nums = [20, 10, 222, 30, 40, 444]

// 联合使用filter,map,reduce + es6语法
// 实现需求:将所有小于100的数字进行转化: 全部*2 然后求和
let total
= nums.filter(n => n < 100). map(n => n * 2). reduce((preValue, n) => preValue + n) // 联合使用filter,map,reduce // 实现需求:将所有小于100的数字进行转化: 全部*2 然后求和 let total = nums.filter(function(n){ return n < 100 }).map(function(n){ return n * 2 }).reduce(function(preValue, n){ return preValue + n }, 0) // 1- filter函数的使用 // 需求:取出所有小于100的数字 // 20 10 30 40 let newNums = nums.filter(function (n) { return n < 100 }) // 2- map函数的使用 对所有数据都进行一次变化 // 需求:将所有小于100的数字进行转化: 全部*2 // 40 20 60 80 let new2Nums.map(function (n) { return n * 2 }) // 3- reduce函数的使用 // 需求:将所有小于100的数字进行转化: 全部*2 然后求和 // reduce作用:对数组中所有的内容进行汇总 // new2Nums.reduce(参数1, 参数2) // 参数1 --- function(preValue, n)) preValue -- 上一次的返回值 // 参数2 --- 初始化值 let totle = new2Nums.reduce(function (preValue, n) { return preValue + n }, 0) // 第一次:preValue -- 0 / n -- 40 // 第二次:preValue -- 0+40=40 / n -- 20 // 第三次:preValue -- 40+20=60 / n -- 60 // 第四次:preValue -- 60+60=120 / n -- 80 // 最后120+80=200

猜你喜欢

转载自www.cnblogs.com/allie71/p/13199567.html