函数式编程javascript查找列表
我想得到数组中的第一个元素,该元素使用functional可能是pure样式匹配函数。请注意,我正在使用库,但它没有那么重要 以纯功能方式重构的代码:函数式编程javascript查找列表,javascript,arrays,functional-programming,refactoring,Javascript,Arrays,Functional Programming,Refactoring,我想得到数组中的第一个元素,该元素使用functional可能是pure样式匹配函数。请注意,我正在使用库,但它没有那么重要 以纯功能方式重构的代码: var result = fjs.first(function(value){ return value.id == notification.id; },array); 我想通过提取这两个对象的.id并传入notification对象来重构它,现在它就在上面的范围内 所以我试着先找地图然后再找。但在我看来,这太难看了 var equa
var result = fjs.first(function(value){
return value.id == notification.id;
},array);
我想通过提取这两个对象的.id并传入notification对象来重构它,现在它就在上面的范围内
所以我试着先找地图然后再找。但在我看来,这太难看了
var equal = fjs.curry(function(arg1, arg2){ // curry allows for partial functions... i think...
return arg1 == arg2
});
var equalNotificationId = fts.equal(notification.id); // partial function of equal for notification.id number
var newIdArray = fts.map(fts.prop("id"),array);
var result = fts.first(equalNotificationId , newIdArray );
我想从功能上重构这个,也许尽可能的纯?有更好的方法吗?我找到了一种重构它的方法,但是如果有人有其他的方法,我会给他们打分
//example data
var notification = {id:10};
var array = [{id:11},{id:6},{id:10},{id:3},{id:1}];
//equal function
var equal = fts.curry(function(arg1,arg2){
return arg1 == arg2;
});
//returns object in array with id 10.
var result = fjs.first(fts.compose(equal(notification.id),fts.prop("id")),array);
O2n开启。无论哪种方式,如果库支持惰性计算,但不知道是否支持,也不确定这是否是正确的术语,那么它只会在需要时映射元素。例如在Immutable.js中:。是的,但这是最好的方法吗?尝试提取两个对象的.id并传入通知对象。抱歉,我的问题不好,我编辑了它,我没有集中精力在时间上,更多的是为了纯功能的方式进行重构。newId数组的目的是将对象数组转换为id数组吗?