Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
javascript中数组的Ramda_Javascript_Arrays_Ramda.js - Fatal编程技术网

javascript中数组的Ramda

javascript中数组的Ramda,javascript,arrays,ramda.js,Javascript,Arrays,Ramda.js,var censusMembers=Object.freeze([ { id:1, 姓名:“鲍勃” }, { id:2, 名字:“苏” }, { id:3, 姓名:'玛丽', 住户识别号:2 }, { id:4, 姓名:'伊丽莎白', 住户识别号:6 }, { id:5, 名字:“汤姆” }, { id:6, 名字:“吉尔” }, { id:7, 姓名:'约翰', 住户识别号:6 } ]);不要使用函数filter计算内容,因为创建数组只是为了获取长度 您可以使用该功能,并在处理程序中检查钥匙h

var censusMembers=Object.freeze([
{
id:1,
姓名:“鲍勃”
}, {
id:2,
名字:“苏”
}, {
id:3,
姓名:'玛丽',
住户识别号:2
}, {
id:4,
姓名:'伊丽莎白',
住户识别号:6
}, {
id:5,
名字:“汤姆”
}, {
id:6,
名字:“吉尔”
}, {
id:7,
姓名:'约翰',
住户识别号:6
}
]);不要使用函数
filter
计算内容,因为创建数组只是为了获取长度

您可以使用该功能,并在处理程序中检查钥匙
househouse\u id

var censusMembers=Object.freeze([{id:1,姓名:'Bob'},{id:2,姓名:'Sue'},{id:3,姓名:'Mary',houseID:2},{id:4,姓名:'Elizabeth',houseID:6},{id:5,姓名:'Tom id:6,姓名:'Jill'},{id:7,姓名:'John houseID:6}]);
//带家庭身份证
//(true强制为1)=1
log(“With:,R.reduce((a,c)=>(c中的'househous_id'))+a,0,censusMembers);
//没有家庭身份证
//                                         !(false强制为0)=1
console.log(“无:”,R.reduce((a,c)=>!(c中的“househous_id)+a,0,censusMembers))
。作为控制台包装{最大高度:100%!重要;顶部:0;}
看起来就是你所缺少的:

var censusMembers=Object.freeze([
{id:1,名称:'Bob'},
{id:2,名字:'Sue'},
{id:3,姓名:'Mary',住户id:2},
{id:4,姓名:'Elizabeth',家庭{id:6},
{id:5,名字:'Tom'},
{id:6,名字:'Jill'},
{id:7,姓名:'John',家庭{id:6}
]);
const countHouseholders=R.pipe(R.filter(R.has('house_id')),R.length)
console.log(countHouseholders(censusMembers))
。作为控制台包装{最大高度:100%!重要;顶部:0;}
您还可以使用来计算所有具有/不具有
家庭id的项目,然后使用以下方法获得
真实值的计数:

const{pipe,countBy,has,prop}=R;
const censusMembers=Object.freeze([{“id”:1,“name”:“Bob”},{“id”:2,“name”:“Sue”},{“id”:3,“name”:“Mary”,“househouse_id”:2},{“id”:4,“name”:“Elizabeth”,“househouse_id”:6},{“id”:6,“name”:“Jill”},{“id”:7,“name”:“John”,“househouse_id”:6});
const countHouseholders=管道(
countBy(has(‘住户识别号’),
道具(‘真’),
);
const result=户主(普查成员);
控制台日志(结果)

为什么是拉姆达?使用vanilla JS这是可能的。我正在探索ramda,您能帮助使用ramda吗?到目前为止,您尝试了哪些ramda技术?R.pipe(R.filter(R.prop(Boolean,'house_id'),R.length)这应该行得通。我想你只是缺少了
,R.length
之前的第二个括号。但请参阅我的答案,以获得更干净的解决方案。如何找到没有家庭id的元素数量?你可以在上面的
中用
拒绝
替换
过滤器
,或者将
有('househouse\u id')包装起来
complete
中。两者都可以。我正在努力构建一个包含id和censusMembers并返回属于具有该id的用户的所有依赖项的LB函数。如果id是依赖项,或者不在censusMember数组中,则函数应返回null。如果没有依赖项,则函数应该返回一个空数组。例如:如果我将id设为6,那么我应该得到这个对象[{“id”:4,“name”:“Elizabeth”,“househouse_id”:6},{“id”:7,“name”:“John”,“househouse_id”:6}]请问另一个问题。评论是为了澄清等。另一个问题可以。它说我必须等90分钟,所以你能在这里回答吗?几乎没有理由向Ramda介绍一个没有它的解决方案。(
censusMembers.reduce(fn,0)
vs
R.reduce(fn,0,censusMembers)
)Ramda是关于构建和组合函数的。我知道这是OP的一个学习练习,但Ramda并不是用来替换下划线/lodash的;它的目的是让在JS中编写FP更容易。@ScottSauyet因为某种原因,该函数在Ramda中可用。我正在努力学习如何构建具有id a的LB函数nd censusMembers并返回属于具有该id的用户的所有依赖项。如果该id为依赖项,或不在censusMember数组中,则函数应返回null。如果没有依赖项,则函数应返回空数组。例如:如果我将id设为6,则应获取此对象[{“id”:4,“name”:“Elizabeth”,“househouse_id”:6},{“id”:7,“name”:“John”,“househouse_id”:6}]@Ele:函数就在那里,你可以编写,例如,
const sum=reduce(add,0)
,从旧函数中创建一个新函数。说
const myTotal=reduce(add,0,myNumbers)没有什么用处
。准确地说,这没有什么问题。如果我已经在使用Ramda,我会这样写。但这并不是Ramda的真正设计目的。@RishabhSrivastava:再次强调,不要在评论中问这个问题。如果你在寻找与原始问题如此不同的东西,请回答。