函数式编程 javascript 在列表中查找

Functional programming javascript find in list

我想使用函数(可能是纯)样式获取数组中与 O(n) 中的函数匹配的第一个元素。注意我正在使用 functional.js 库,但它并不那么重要。

将代码重构为纯函数式方式:

var result = fjs.first(function(value){
    return value.id == notification.id;
},array);

我想通过提取两个对象的 .id 并传入通知对象来重构它,现在它在上面的范围内

所以我尝试先映射然后查找。但它超级丑(在我看来)。

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);