在单值上使用Lodash链

时间:2016-10-11 09:15:22

标签: javascript lodash chaining

我想在单个string上链接一些方法,以便字符串操作看起来更具可读性。

但似乎chain()仅适用于集合。

这不是问题,我只是将它包装到数组中,但是为了获取最终值,我必须使用零索引运算符,这在这里看起来很奇怪。

var res = _(["   test   "])
   .map(function(s) { return s + s; })
   .map(_.trim)
   .value()[0];

或TypeScript:

var res = _(["   test   "])
   .map(s => s + s)
   .map(_.trim)
   .value()[0];

如何解决?

2 个答案:

答案 0 :(得分:1)

lodash中有两个功能:

  1. thru-将自定义函数应用于链中的值;
  2. tap-应用自定义函数,但不传播其返回值;

示例(纯ES6):

const res = _.chain("   test   ")
       .thru(s => s + s)
       .thru(_.trim)
       .value();

答案 1 :(得分:0)

解决方案是使用head()代替value()

var res = _(["   test   "])
   .map(function(s) { return s + s; })
   .map(_.trim)
   .head();

或TypeScript:

var res = _(["   test   "])
   .map(s => s + s)
   .map(_.trim)
   .head();

这种方式res只是一个字符串,代码更具可读性。