【问题标题】:lodash function to return the result of .taplodash 函数返回 .tap 的结果
【发布时间】:2013-12-04 23:54:54
【问题描述】:

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

我想要这样的东西:

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

_.mixin({run: run});

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

【问题讨论】:

  • 这是为了链接吗?
  • 我想把它保存在链中,这样我就可以.filter('piece').run(function(n){return n.length > 2;}).value().tap 是我能找到的最接近的。
  • tap 专门设计用于修改链,也许您正在寻找map
  • 现在可以在 lodash 中使用 thru

标签: javascript underscore.js lodash


【解决方案1】:

你可以像这样创建一个通用的 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 调用的附加参数。

【讨论】:

    【解决方案2】:

    在 lodash 中,从 v3 开始,您可以使用 _.thru

    _.thru(value, interceptor, [thisArg])
    

    这个方法和_.tap类似,只是它返回拦截器的结果。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-07-18
      • 2011-12-27
      • 2012-12-19
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多