在单值上使用 Lodash 链
Use Lodash chain on single value
我想在单个 string
上链接一些方法,以便字符串操作看起来更具可读性。
但似乎 chain()
仅适用于集合。
这不是问题,我只是将它包装到数组中,但要获取最终值我必须使用零索引运算符,这在这里看起来很奇怪。
var res = _([" test "])
.map(function(s) { return s + s; })
.map(_.trim)
.value()[0];
或打字稿:
var res = _([" test "])
.map(s => s + s)
.map(_.trim)
.value()[0];
如何解决?
解决方案是使用 head()
而不是 value()
:
var res = _([" test "])
.map(function(s) { return s + s; })
.map(_.trim)
.head();
或打字稿:
var res = _([" test "])
.map(s => s + s)
.map(_.trim)
.head();
这样res
只是一个字符串,代码可读性更好
lodash
中有两个函数:
thru
- 将自定义函数应用于链中的值;
tap
- 应用自定义函数,但不传播其 return 值;
示例(纯 ES6):
const res = _.chain(" test ")
.thru(s => s + s)
.thru(_.trim)
.value();
我想在单个 string
上链接一些方法,以便字符串操作看起来更具可读性。
但似乎 chain()
仅适用于集合。
这不是问题,我只是将它包装到数组中,但要获取最终值我必须使用零索引运算符,这在这里看起来很奇怪。
var res = _([" test "])
.map(function(s) { return s + s; })
.map(_.trim)
.value()[0];
或打字稿:
var res = _([" test "])
.map(s => s + s)
.map(_.trim)
.value()[0];
如何解决?
解决方案是使用 head()
而不是 value()
:
var res = _([" test "])
.map(function(s) { return s + s; })
.map(_.trim)
.head();
或打字稿:
var res = _([" test "])
.map(s => s + s)
.map(_.trim)
.head();
这样res
只是一个字符串,代码可读性更好
lodash
中有两个函数:
thru
- 将自定义函数应用于链中的值;tap
- 应用自定义函数,但不传播其 return 值;
示例(纯 ES6):
const res = _.chain(" test ")
.thru(s => s + s)
.thru(_.trim)
.value();