jjzjj

javascript - 使用 ramda 更改数组中的对象属性

我有一个如下所示的对象数组:[{name:'name',key:'21',good:'true'},{name:'anothername',key:'22',good:'false'},...]现在我想更改此数组中的其中一个对象。我的第一次尝试是这样的:consts=R.compose(R.assoc('good',checked),R.propEq('key',name),R.map(),);但此代码生成了我想要的那个对象,并且只有它的'good'属性。我想通过该更改获得整个数组。 最佳答案 我会这样做:constalter=cu

javascript - 如何使用 Ramda 从对象中过滤掉特定的键?

http://ramdajs.com/0.21.0/docs/#propRamdaReplvarmyObject={a:1,b:2,c:3,d:4};varnewObject=R.filter(R.props('a'),myObject);//varnewObject=R.filter(R.equals(R.props('a')),myObject);console.log('newObject',newObject);现在上面的代码正在返回整个对象:新对象{"a":1,"b":2,"c":3,"d":4}我想做的只是返回一个只有'a'键的新对象。或者使用a和b键的新对象。

javascript - 使用 Ramda 映射和过滤对象

我在学习Ramda我有点困惑如何使用Ramda构建下面的lodash链。Ramda为它的操作返回函数而不是实际值,这似乎是函数式编程的焦点,但是在这个例子中我有第二个参数localRegex那不是不是主要论点。如果不包装Ramda函数并使用.apply()或.call()将包装的函数参数传播到Ramda函数,这似乎比使用lodash更复杂。var_=require("lodash")varR=require("ramda")varlocalRegex=/^.\.\/|^.\/|^\//functiongetRecursiveDeps(deps,localRegex){return_.c

javascript - 使用 ES6 导入加载特定名称是否比导入命名空间更快?

例如,我发现至少有两种方法可以从像Ramda这样的模块中导入函数。可能还有更多方法可以做一些非常相似的事情,比如constR=require('ramda');选项1是导入某些函数:import{cond,T,always,curry,compose}from'ramda';选项2是像这样导入整个模块:import*asRfrom"ramda";我更愿意像这样引用调用函数的模块:R.T();但是如果使用第二个选项,它是否会引入每个Ramda函数,而不仅仅是我正在使用的模块中使用的函数?如果使用选项2,就发送到浏览器的内容而言,是否对实际内存使用或带宽使用有任何影响?是否有可能以某种方式

javascript - 将逻辑 NOT 应用于 propEq 并在 ramda 中进行过滤

我正在尝试使用Ramda进行函数式编程我正在努力做一些听起来应该很容易的事情。我想要数组中属性不等于某个值的所有条目。例如纯jsconstfiltered=source.filter(entry=>entry.name!=='something');在Ramda中有一个propEq所以我可以很容易地得到所有匹配一个值的元素,比如constfiltered=R.filter(R.propEq('name','something'),source);但我看不出如何做相反的操作,只返回不等于某个值的值。我敢肯定这一定很容易,但我很难看到一个内置函数来做到这一点,我能想到的最接近的是:cons

javascript - 避免在 Ramda 中进行双重连接

我的问题很简单。我从Ramda开始最近,我喜欢它,因为它是纯功能性的。concat函数有点问题,因为它只接受两个列表作为参数。因此,如果我需要连接三个或更多列表,我必须像这样链接函数:concat(list1,concat(list2,concat(list3,list4)))(用于四个列表连接).有没有更好的方法来做到这一点,我不知道?谢谢。 最佳答案 如果你想连接一个列表的列表,你可以使用R.concat将列表缩减为一个空列表作为初始值。constconcatAll=R.reduce(R.concat,[]);concatAll

javascript - 使用 Ramda 的无点样式大写函数

虽然编写大写函数很简单,例如:“你好”=>“你好”“你好”=>“你好”如何使用RamdaJS使用无点样式来编写它?https://en.wikipedia.org/wiki/Tacit_programming 最佳答案 您可以使用在第一个字符上运行toUpper的正则表达式部分应用replace:constcapitalize=R.replace(/^./,R.toUpper); 关于javascript-使用Ramda的无点样式大写函数,我们在StackOverflow上找到一个类似的

javascript - 将函数列表应用于 Ramda 中的值

我如何最好地在Ramda中创建此函数?functionget_list(value){return[first_transform(value),second_transform(value)]}get_list(12)我猜这是map的倒数功能。 最佳答案 为此您有几个选择。假设您的函数已经在列表中:transforms=[first_transform,second_transform];第一个选项是使用R.juxt,它通过创建一个将给定函数列表应用于新函数接收的值的新函数,几乎完全符合您的要求。get_list=R.juxt(t

字符串的过滤列表,如果关键字使用RAMDA在另一个列表中匹配

我有一个从API返回的URL列表:constdata=['/shoutouts','/shoutouts/shoutout','/news/news-story','/example-page','/another-page','/stories/what-s-next','/metrics','/links','/links/sprint','/quick-links','/quick-links/confluence']而且我有一些类别,我想通过以下方式过滤我的URL:constfilters=['news','shoutouts','quick-links','metrics','lin

node.js - Ramda 在 Mongoose 查询回调中不起作用

我正在使用NodeJS、Express、Mongoose、Ramda编写RESTAPI。我需要使用Ramda的实用程序为客户端准备响应,但我遇到了一些问题:constR=require('ramda');router.put('/:id/update',(req,res)=>{User.findOneAndUpdate({'_id':req.params.id},{$set:{a:'a'}},{},(err,newUser)=>{if(err){res.status(500).send(responseCodes.updateUserError());}else{constexempl