filter ,map ,reduce三个高阶函数的使用

普通方法解决数据问题

    1. const nums1= [10,20,111,222,444,40,50]
    2. // 需求1.取出小于100的数字
    3. // 常规思想,用一个数组保存取出的数字,遍历里面的项,小于100的追加进新数组
    4. let newNums = []
    5. for(let n of nums1){
    6. if(n<100){
    7. newNums.push(n)
    8. }
    9. }
    10. console.log(newNums)
    11. // 需求2.再将所有小于100的数字进行转化:全部乘2
    12. let newNums2 = []
    13. for(let n of newNums){
    14. newNums2.push(n*2)
    15. }
    16. console.log(newNums2)
    17. // 需求3.再将所有数据相加
    18. let total =0 ;
    19. for(let n of newNums2){
    20. total +=n
    21. }
    22. console.log(total);
  1. 经过三次创建新数组和对数组的操作拿到了最终想要的数据

引入三个高阶函数

    1. const nums2 = [10,20,111,222,444,40,50]
    2. // filter (数组数据过滤)
    3. // arr.filter( callbackfn(n) ) ->回调函数有一个要求,必须返回一个boolean值
    4. // 回调函数中的参数n会依此拿arr数组中的每一项
    5. // 当返回true的时候,函数内部会自动将这次回调的n加入到新的数组中
    6. // 当返回的false的时候,函数内部会过滤这次的
    7. let new1 = nums2.filter(function(n){
    8. return n < 100
    9. })
    10. console.log(new1);
    11. // map (数组数据变异)
    12. // arr.map( callbackfn(n) ) ->回调函数与filter不同,有返回值,但是不是boolean值
    13. // 每次返回的值都作为内部创建的数组的项依此添加进去
    14. let new2 = new1.map(function(n){
    15. return n*2
    16. })
    17. console.log(new2);
    18. // reduce (数组数据汇总(相乘,相加))
    19. // arr.reduce( callbackfn (preValue , n) , num )
    20. // preValue上一次返回的值,n为调用该方法数组的每一项 num为perValue的初始值
    21. let sum = new2.reduce((preValue,n)=>{
    22. return preValue + n
    23. },0)
    24. console.log(sum);

高阶函数的链式调用

    1. // 链式调用
    2. // 高阶函数的高阶用法:因为这三个函数都会返回一个数组,那我门是不是连续使用此方法
    3. let sum1 = nums2.filter((n)=>{
    4. return n<100
    5. }).map((n)=>{
    6. return n*2
    7. }).reduce((e,n)=>{
    8. return e+n
    9. },0)
    10. console.log(sum1);

filter,map,reduce三个数组高阶函数的使用的更多相关文章

  1. JavaScript系列--JavaScript数组高阶函数reduce()方法详解及奇淫技巧

    一.前言 reduce() 方法接收一个函数作为累加器,数组中的每个值(从左到右)开始缩减,最终计算为一个值. reduce() 可以作为一个高阶函数,用于函数的 compose. reduce()方 ...

  2. JavaScript(1)高阶函数filter、map、reduce

    前言 需求:有这样一个数组[10, 20, 110, 200, 60, 30, 40] 1.筛选出数组中小于100的元素 2.将筛选出的每个元素的值x2 3.完成第2步之后,将数组中的所有元素加起来 ...

  3. 8.Javascript-map、reduce、filter 等高阶函数

    高阶函数 高阶函数是对其他函数进行操作的函数,可以将它们作为参数或通过返回它们.简单来说,高阶函数是一个函数,它接收函数作为参数或将函数作为输出返回. 例如Array.prototype.map,Ar ...

  4. Swift 烧脑体操(三) - 高阶函数

    前言 Swift 其实比 Objective-C 复杂很多,相对于出生于上世纪 80 年代的 Objective-C 来说,Swift 融入了大量新特性.这也使得我们学习掌握这门语言变得相对来说更加困 ...

  5. 5. vue常用高阶函数及综合案例

    一. 常用的数组的高阶函数 假设, 现在有一个数组, 我们要对数组做如下一些列操作 1. 找出小于100的数字: 2. 将小于100的数字, 全部乘以2: 3. 在2的基础上, 对所有数求和: 通常我 ...

  6. 【python】python函数式编程、高阶函数

    1.map() : python内置的高阶函数,接收一个函数f和一个list,并通过把函数f依次作用在list的每个元素上,得到一个新的list并            返回. def f(x): r ...

  7. scala中的高阶函数

    版权申明:转载请注明出处. 文章来源:http://bigdataer.net/?p=332 排版乱?请移步原文获得更好阅读体验 1.scala中的函数 scala是一门面向对象和函数式编程相结合的语 ...

  8. 高阶组件&&高阶函数(一)

    antd里面的form表单方面,遇到一个高阶函数,以及高阶组件,于是看了一下这方面内容,前辈们的文章写得也非常详细,这里就稍微kobe一下 高阶函数与高阶组件 高阶函数: 高阶函数,是一种特别的函数, ...

  9. JavaScript学习笔记(十)——高阶函数之map,reduce,filter,sort

    在学习廖雪峰前辈的JavaScript教程中,遇到了一些需要注意的点,因此作为学习笔记列出来,提醒自己注意! 如果大家有需要,欢迎访问前辈的博客https://www.liaoxuefeng.com/ ...

随机推荐

  1. KafkaManager2.0.0.2安装与使用

    KafkaManager 是雅虎开源的一款 针对kafka集群的web管理工具, 具体功能和介绍就不再这细讲 kafka-manager github官网  https://github.com/ya ...

  2. 【CentOS7】修改yum源

    [CentOS7]修改yum源 转载:https://www.cnblogs.com/yangchongxing/p/10645944.html 1.备份源 # mv /etc/yum.repos.d ...

  3. 一篇文章带你解读Redis分布式锁的发展史和正确实现方式

    前言 近两年来微服务变得越来越热门,越来越多的应用部署在分布式环境中,在分布式环境中,数据一致性是一直以来需要关注并且去解决的问题,分布式锁也就成为了一种广泛使用的技术,常用的分布式实现方式为Redi ...

  4. JS基础知识——变量类型和计算(一)

    JS中使用typeof能得到的哪些类型? 何时使用===何时使用==? JS中有哪些内置函数? JS变量按照存储方式区分为哪些类型,描述其特点? 如何理解JSON? 知识点梳理 一.变量类型: (1) ...

  5. 云服务器配置 docker java mysql mongodb redis nginx 环境

    磁盘挂载 fdisk -l #查看磁盘列表 mkfs.ext4 /dev/vdb #格式化磁盘 mount /dev/vdb /data #挂载磁盘在/data echo '/dev/vdb /dat ...

  6. monkey测试跑多个apk|monkey命令

    1.如何跑多个apk的monkey? 黑名单:执行除了黑名单中以外的apk: 白名单:只执行在白名单中的apk. 黑名单的设置方法: a.创建一个名称为blacklist的txt文档,在文件中输入应用 ...

  7. Office安装时报错1907的解决方法

    大家在装office时可能遇到过1907错误,字体无法注册 的问题,百度后者是采用什么四种方法,我四种方法都试过了没有用,也有人说缺什么日本字体,我也试过了没有用,做为有强迫证的我都重做系统,重下载o ...

  8. delete误删数据使用SCN恢复

    参考51CTO博客 问题描述:使用scn号恢复误删数据 1.查询系统闪回的scn值以及当前日志的scn值,因为我这个是测试,创建的表是在在后边,所以scn值要大于下边这两个scn值,所以对我恢复数据没 ...

  9. leetcode菜鸡斗智斗勇系列(3)--- Jewels and Stones珠宝和钻石

    1.原题: https://leetcode.com/problems/jewels-and-stones/ You're given strings J representing the types ...

  10. Django-如何写好一个celery定时任务

    1.首先在项目同名目录下建一个celery.py from __future__ import absolute_import import os from celery import Celery ...