Lodash:使用函数数组转换单个值

时间:2016-09-19 10:21:42

标签: javascript lodash

我正在寻找能够使用函数数组转换/映射/过滤单个值的lodash函数,例如:

给定值为:" a, b ,c"

然后使用以下函数调用lodash:_.transform(value, functionList)

functionListsplittrimEach的函数数组。

预期结果为['a', 'b', 'c']

更新:

感谢@vlaz,_.flow()是我正在寻找的。

我上面给出的例子说明了功能的目的。我不是在寻找如何分割和修剪字符串(对不起,可能是我的英语不够好)。

要回答我自己的问题(和我的例子),示例代码是:



function split(v) {
    return v.split(',')
}
function trimStrArray(v) {
    return _.map(v, _.trim)
}
var fn = _.flow([split, trimStrArray])

console.log(fn(" a, b ,c"))

<script src="https://cdn.jsdelivr.net/lodash/4.15.0/lodash.min.js"></script>
&#13;
&#13;
&#13;

感谢大家。

2 个答案:

答案 0 :(得分:1)

您可以使用Array.prototype.reduce()_.reduce()来实现它。在函数数组上调用reduce:

&#13;
&#13;
function transform(value, functionList) {
  return functionList.reduce(function(result, fn) {
    return fn(result);
  }, value);
}

var value = " a, b, c";

function split(value) {
  return value.split(',');
}

function trimEach(value) {
  return value.map(function(item) {
    return item.trim();
  });
}

var functionList = [split, trimEach];

var result = transform(value, functionList);

console.log(result);
&#13;
&#13;
&#13;

答案 1 :(得分:0)

您可以使用_.split_.map和回调_.trim;

&#13;
&#13;
var string = " a, b ,c",
    result = _.map(_.split(string, ','), _.trim);
console.log(result);
&#13;
<script src="https://cdnjs.cloudflare.com/ajax/libs/lodash.js/4.15.0/lodash.min.js"></script>
&#13;
&#13;
&#13;