函数式编程 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);
我想使用函数(可能是纯)样式获取数组中与 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);