iis服务器助手广告广告
返回顶部
首页 > 资讯 > 精选 >compose和pipe函数怎么在JavaScript中使用
  • 256
分享到

compose和pipe函数怎么在JavaScript中使用

2023-06-14 21:06:07 256人浏览 独家记忆
摘要

本篇文章为大家展示了compose和pipe函数怎么在javascript中使用,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。JavaScript的作用是什么1、能够嵌入动态文本于html页面。2、

本篇文章为大家展示了compose和pipe函数怎么在javascript中使用,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。

JavaScript的作用是什么

1、能够嵌入动态文本于html页面。2、对浏览器事件做出响应。3、读写HTML元素。4、在数据被提交到服务器之前验证数据。5、检测访客的浏览器信息。6、控制cookies,包括创建和修改等。7、基于node.js技术进行服务器编程

compose函数

compose函数可以将需要嵌套执行的函数平铺,嵌套执行就是一个函数的返回值将作为另一个函数的参数。我们考虑一个简单的需求:这个需求很简单,直接一个计算函数就行:

const calculate = x => (x + 10) * 10;let res = calculate(10);console.log(res);    // 200

但是根据我们之前讲的函数式编程,我们可以将复杂的几个步骤拆成几个简单的可复用的简单步骤,于是我们拆出了一个加法函数和一个乘法函数:

const add = x => x + 10;const multiply = x => x * 10;// 我们的计算改为两个函数的嵌套计算,add函数的返回值作为multiply函数的参数let res = multiply(add(10));console.log(res);    // 结果还是200

上面的计算方法就是函数的嵌套执行,而我们compose的作用就是将嵌套执行的方法作为参数平铺,嵌套执行的时候,里面的方法也就是右边的方法最开始执行,然后往左边返回,我们的compose方法也是从右边的参数开始执行,所以我们的目标就很明确了,我们需要一个像这样的compose方法:

// 参数从右往左执行,所以multiply在前,add在后let res = compose(multiply, add)(10);

在讲这个之前我们先来看一个需要用到的函数Array.prototype.reduce

Array.prototype.reduce

数组的reduce方法可以实现一个累加效果,它接收两个参数,第一个是一个累加器方法,第二个是初始化值。累加器接收四个参数,第一个是上次的计算值,第二个是数组的当前值,主要用的就是这两个参数,后面两个参数不常用,他们是当前index和当前迭代的数组:

const arr = [[1, 2], [3, 4], [5, 6]];// prevRes的初始值是传入的[],以后会是每次迭代计算后的值const flatArr = arr.reduce((prevRes, item) => prevRes.concat(item), []);console.log(flatArr); // [1, 2, 3, 4, 5, 6]

Array.prototype.reduceRight

Array.prototype.reduce会从左往右进行迭代,如果需要从右往左迭代,用Array.prototype.reduceRight就好了

const arr = [[1, 2], [3, 4], [5, 6]];// prevRes的初始值是传入的[],以后会是每次迭代计算后的值const flatArr = arr.reduceRight((prevRes, item) => prevRes.concat(item), []);console.log(flatArr); // [5, 6, 3, 4, 1, 2]

那这个compose方法要怎么实现呢,这里需要借助Array.prototype.reduceRight:

const compose = function(){  // 将接收的参数存到一个数组, args == [multiply, add]  const args = [].slice.apply(arguments);  return function(x) {    return args.reduceRight((res, cb) => cb(res), x);  }}// 我们来验证下这个方法let calculate = compose(multiply, add);let res = calculate(10);console.log(res);    // 结果还是200

上面的compose函数使用es6的话会更加简洁:

const compose = (...args) => x => args.reduceRight((res, cb) => cb(res), x);

Redux的中间件就是用compose实现的,webpack中loader的加载顺序也是从右往左,这是因为他也是compose实现的。

pipe函数

pipe函数跟compose函数的左右是一样的,也是将参数平铺,只不过他的顺序是从左往右。我们来实现下,只需要将reduceRight改成reduce就行了:

const pipe = function(){  const args = [].slice.apply(arguments);  return function(x) {    return args.reduce((res, cb) => cb(res), x);  }}// 参数顺序改为从左往右let calculate = pipe(add, multiply);let res = calculate(10);console.log(res);    // 结果还是200

ES6写法:

const pipe = (...args) => x => args.reduce((res, cb) => cb(res), x)

上述内容就是compose和pipe函数怎么在JavaScript中使用,你们学到知识或技能了吗?如果还想学到更多技能或者丰富自己的知识储备,欢迎关注编程网精选频道。

--结束END--

本文标题: compose和pipe函数怎么在JavaScript中使用

本文链接: https://www.lsjlt.com/news/275126.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • compose和pipe函数怎么在JavaScript中使用
    本篇文章为大家展示了compose和pipe函数怎么在JavaScript中使用,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。JavaScript的作用是什么1、能够嵌入动态文本于HTML页面。2、...
    99+
    2023-06-14
  • 详解JS中的compose函数和pipe函数用法
    目录compose函数Array.prototype.reduceArray.prototype.reduceRightpipe函数compose函数 compose函数可以将需要嵌...
    99+
    2024-04-02
  • 怎么在JavaScript中使用max函数
    这篇文章给大家介绍怎么在JavaScript中使用max函数,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。Java是什么Java是一门面向对象编程语言,可以编写桌面应用程序、Web应用程序、分布式系统和嵌入式系统应用程...
    99+
    2023-06-14
  • 怎么在JavaScript中使用filter函数
    这篇文章给大家介绍怎么在JavaScript中使用filter函数,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。JavaScript的特点1.JavaScript主要用来向HTML页面添加交互行为。2.JavaScri...
    99+
    2023-06-14
  • JavaScript中isPrototypeOf、instanceof和hasOwnProperty函数怎么使用
    本篇内容主要讲解“JavaScript中isPrototypeOf、instanceof和hasOwnProperty函数怎么使用”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“JavaScrip...
    99+
    2023-07-02
  • 怎么在Javascript中使用filter()函数筛选数据
    本篇文章给大家分享的是有关怎么在Javascript中使用filter()函数筛选数据,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。1.filter()语法:var ...
    99+
    2023-06-14
  • Java 8中compose和andThen组合函数如何使用
    这篇文章给大家介绍Java 8中compose和andThen组合函数如何使用,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。什么是函数组合?首先需要创建一些小的可重用函数,然后将这些小函数组合为新函数。现在,我们怎么利...
    99+
    2023-06-17
  • JavaScript函数怎么定义和使用
    本文小编为大家详细介绍“JavaScript函数怎么定义和使用”,内容详细,步骤清晰,细节处理妥当,希望这篇“JavaScript函数怎么定义和使用”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。1.用函数语句定义...
    99+
    2023-07-02
  • JavaScript函数怎么封装和使用
    本篇内容主要讲解“JavaScript函数怎么封装和使用”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“JavaScript函数怎么封装和使用”吧!1、函数函数:...
    99+
    2024-04-02
  • javascript中XmlHttp.open函数怎么使用
    在JavaScript中,`XmlHttp.open()`函数用于创建一个新的XMLHttpRequest对象,并指定要发送的请求的...
    99+
    2023-09-14
    javascript
  • dropna()和notnull()函数怎么在python中使用
    dropna()和notnull()函数怎么在python中使用?很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。python是什么意思Python是一种跨平台的、...
    99+
    2023-06-07
  • np.argmin()和np.argmax()函数怎么在Python中使用
    np.argmin()和np.argmax()函数怎么在Python中使用?针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。Python np.argmin()和np.argm...
    99+
    2023-06-15
  • JavaScript中Generator函数和yield表达式怎么使用
    这篇“JavaScript中Generator函数和yield表达式怎么使用”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“J...
    99+
    2023-07-04
  • javascript中的replace函数怎么使用
    在JavaScript中,可以使用`replace()`函数来替换字符串中的内容。`replace()`函数接受两个参数:要替换的内...
    99+
    2023-08-18
    javascript replace
  • JavaScript中的async函数怎么使用
    本篇内容主要讲解“JavaScript中的async函数怎么使用”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“JavaScript中的async函数怎么使用”吧!async函数async函数的返...
    99+
    2023-07-04
  • 如何在JavaScript中使用join函数
    如何在JavaScript中使用join函数?很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。Java的优点是什么1. 简单,只需理解基本的概念,就可以编写适合于各...
    99+
    2023-06-14
  • 在PHP中如何使用JavaScript函数?
    在PHP中如何使用JavaScript函数? 在Web开发中,PHP和JavaScript是两种常用的编程语言。PHP通常用于服务器端编程,而JavaScript则用于客户端编程。然而...
    99+
    2024-03-04
    php与js协同
  • Compose怎么安装和使用
    这篇文章主要介绍了Compose怎么安装和使用的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇Compose怎么安装和使用文章都会有所收获,下面我们一起来看看吧。compose简...
    99+
    2024-04-02
  • 如何在JavaScript中使用bind()函数
    这篇文章给大家介绍如何在JavaScript中使用bind()函数,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。1.语法:function.bind(thisArg[,arg1[,arg2[, ...]]])...
    99+
    2023-06-14
  • ​Javascript escape()函数和unescape()函数怎么用
    escape()函数用于对字符串进行编码,将字符串中的特殊字符转换为Unicode编码的字符串。unescape()函数用于对编码后...
    99+
    2023-10-21
    ​Javascript
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作