TOGOUTECH

functional-programming

全部标签

javascript - 函数式 JavaScript : how to implement Function. prototype.not

今天早些时候我正在编写一些代码,当我意识到,“嘿!如果我将bool值的概念从匿名函数中抽象出来并放入原型(prototype)函数中,这段代码会更加简洁和语义化......”考虑一个谓词生成器:functionequalTo(n){returnfunction(x){returnn==x;};}所以你可以像这样使用它:[1,2,3,4,1,2,3,4].filter(equalTo(2))==[2,2]现在,我的想法是做一个谓词“inverser”:Function.prototype.not=function(){//???}这样你就可以说:[1,2,3,4,1,2,3,4].fil

javascript - 为什么在这个函数定义中这样使用 'window.angular'?

我正在尝试理解我需要用来与Django集成的angularjs文件,它有一个我不熟悉的奇怪语法(请记住我是初级开发人员,所以这可能是你的面包和黄油)...它是这样的:(function(angular,undefined){'usescript';vardjng_forms_module=angular.module('ng.django.forms',[]);funtionhasCode(s){return.....}varfoo=.....}(window.angular));我看过this关于窗口的javascript概念,它表明window部分是

javascript - 函数组合中的条件操作

如何根据某些逻辑条件停止或分支合成?例如。假设我有以下代码:compose(operation4operation3,operation2,operation1)(myStuff);或者甚至是类似的东西myStuff.map(operation1).map(operation2).map(operation3).map(operation4)我只想在myStuff满足某些条件时执行操作3和4。我如何实现它(特别是在JavaScript中)?我是否必须创建两个较小的组合并有一个单独的if语句,或者有没有办法在组合中包含条件?Monad能解决我的问题吗?如果是,怎么办?

javascript - 哪个 Javascript 函数库 : Underscore or wu. js 或 Functional 或...?

按照目前的情况,这个问题不适合我们的问答形式。我们希望答案得到事实、引用或专业知识的支持,但这个问题可能会引发辩论、争论、投票或扩展讨论。如果您觉得这个问题可以改进并可能重新打开,visitthehelpcenter指导。关闭10年前。我正在构建一个node.js应用程序,想知道要将哪个javascript库添加到我的库中。当前的候选名单包括:UnderscorewuFunctional在浏览器中工作的东西的奖励积分(所以我可以在客户端和服务器上使用它)。有什么想法吗?建议?对以上的看法?还有什么我应该调查的吗?

javascript - 使用函数式 Javascript 与 "procedural"的性能影响

有没有人做过基准测试,或者可以链接到关于这个主题的文章?对IE结果特别感兴趣,因为通常JS性能在其他浏览器中不是问题。我想知道做这样的事情要慢多少:varnumbers=[1,2,3,4,5,6,7];varresults=numbers.map(function(){//dosomestuff});而不是典型的:varnumbers=[1,2,3,4,5,6,7];varresults=[];for(vari=0;i<numbers.length;i++){varnumber=numbers[i];varresult;//dosomestuffresults.push(resu

javascript - 函数式 javascript 和 RxJS 中的依赖注入(inject)和模拟

我正在尝试使用RxJS和函数组合将用经典OOJavascript编写的库重写为更具功能性和react性的方法。我从以下两个易于测试的函数开始(我跳过了Observables的导入):创建连接.jsexportdefault(amqplib,host)=>Observable.fromPromise(amqplib.connect(host))创建channel.jsexportdefaultconnection=>Observable.fromPromise(connection.createChannel())测试它们所需要做的就是注入(inject)amqplib或连接

javascript - 在 try block 中分配值的最佳方法

letx;try{x=...;}catch(e){return}//restofthecodethatuses`x`consty=x+...;x只分配了一次,但我必须使用let而不是const。另一种方式是:try{constx=...;//restofthecodethatuses`x`consty=x+...;}catch(e){return}但是,这会增加嵌套并导致不清楚什么会引发错误。有没有更好的方法?如果try失败,我不必关心x的值,因为我将在catch中返回阻止。我也不想将其提取出来以分离功能。 最佳答案 每当遇到这样的

javascript - 如何使用 Lo-Dash 连接数组

由于我正在试用Lo-Dash,我想知道如何连接和排序两个数组?A1:[3,1]A2:[{1:'val1'},{2:'val2'},{3:'val3'},{4:'val4'},…]A1joinA2orderByVals:[{1:‘val1’},{3:‘val3’}]使用_.sortBy排序似乎很简单。但是如何执行连接呢? 最佳答案 我将不得不做出一些假设来回答您的问题。首先,像路易斯mentioned在评论中,A2不是有效的Javascript。因此,让我们按照Louis的建议,改用格式[{1:'val1'},...]。其次,A2中的

javascript - 使用函数式编程复制数组的元素

我正在尝试复制数组中的每个元素,但使用的是函数式样式。我目前有这个:["a","b","c"]我得到这个:["a","a","b","b","c","c"]到目前为止,我已经尝试了以下方法,将每个元素映射到一个数组,然后使用flat()获取一维数组。有没有更干净的方法,因为感觉我在滥用map和flat。["a","b","c"].map(item=>[item,item]).flat();有

javascript - 函数式编程和 DOM 操作

如何在以“函数式”方式编写的脚本中以最“纯粹”的方式操作DOM。例如,如果我只需要更改元素宽度,我应该使用像这样的典型语法:document.querySelector(".class").style.width=...或者编写专门的函数,比如:functionresize(el,w){returnel.style.width=w;}resize(document.querySelector(".class",100));我想,我了解函数式编程的一般概念,但我遇到的所有示例都集中在处理数字或字符串上。操作DOM被认为是副作用,所以我想知道如何以正确的方式