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查找列表_Javascript_Arrays_Functional Programming_Refactoring - Fatal编程技术网

函数式编程javascript查找列表

函数式编程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

我想得到数组中的第一个元素,该元素使用functional可能是pure样式匹配函数。请注意,我正在使用库,但它没有那么重要

以纯功能方式重构的代码:

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数组吗?