lodash函数返回.tap的结果

时间:2013-12-04 23:54:55

标签: javascript underscore.js lodash

我正在寻找一个返回.tap结果的lodash(或下划线)函数。

我想要这样的事情:

var run = function(collection, fn) {
  return fn(collection);
};

_.mixin({run: run});

我希望我忽略了文档中的某些内容,所以我不必创建自己的mixin。

2 个答案:

答案 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]) 类似,只是它返回拦截器的结果。