我正在寻找一个返回.tap
结果的lodash(或下划线)函数。
我想要这样的事情:
var run = function(collection, fn) {
return fn(collection);
};
_.mixin({run: run});
我希望我忽略了文档中的某些内容,所以我不必创建自己的mixin。
答案 0 :(得分:0)
你可以像这样创建一个通用的mixin:
function add(a, b, c) {
return a + b + c
}
function sub(a, b, c) {
return a - b - c
}
_.mixin({
run: function (v, f) {
var args = Array.prototype.slice.call(arguments, 2)
args.unshift(v)
return f.apply(this, args)
}
})
var r = _.chain(1).run(add, 1, 1).run(sub, 2, 2).value()
console.log(r) -> -1
1 + 1 + 1 - 2 - 2 = -1
您可以传递函数和其他参数。将使用最后一个链操作的结果作为第一个参数和run
调用的附加参数调用该函数。
答案 1 :(得分:0)
在lodash中,您可以在v3之后使用_.thru
:
UPDATE `notifications` SET `tox` = ( SELECT tracks.uid FROM `tracks` INNER JOIN `comments` ON tracks.id = comments.tid ORDER BY comments.id DESC LIMIT 1) WHERE `tox` = 0 ORDER BY `id` DESC LIMIT 1;
此方法与
_.thru(value, interceptor, [thisArg])
类似,只是它返回拦截器的结果。