var scope = {
entries : [
{ label : 'one', value : 'first entry'},
{ label : 'two', value : 'second entry'},
{ label : 'a', value : 'x'}
],
order : 'label'; // may also contain 'value'
}
现在我想根据订单的价值对订单进行订购并缓存它。
我知道使用闭包的方式:
_.memoize(
function() {
return _.sortBy( scope.entries, scope.order);
},
_.partial( _.result, scope, 'order')
)
是否可以用类似第二个参数(由_.partial生成的函数)替换调用_.sortBy的闭包?
要明确:我想要的是一种声明'sortby order'东西而不将其包装在函数中的方法。所以它看起来像:
_.memoize(
// line below doesnt work, just to clarify what i want :-)
_.sortBy( scope.entries, _.result( scope, 'order')),
_.partial( _.result, scope, 'order')
)
答案 0 :(得分:0)
好吧,_.memoize
需要一个memoize函数,所以不,你不能用你想要记忆的函数调用替换第一个参数。您的代码看起来似乎是半最优的。另一方面,使用_.result
获取属性值似乎很奇怪,我想你可以使用_.partial
并避免编写function
;确定它会工作,但也许有点混乱,所以为什么不在那里使用一个功能呢?将其scope
参数化,你就有了
_.memoize(
function(scope) {return _.sortBy(scope.entries, scope.order);},
function(scope) {return scope.order;}
);
对我来说似乎很干净。