2016-09-19 25 views
0

我想找lodash函數陣列能夠與功能數組變換/映射/過濾器的單個值,例如:Lodash:變換單值與功能

給定值是:" a, b ,c"

然後調用lodash與像功能:_.transform(value, functionList)

其中functionList是函數數組splittrimEach

預期結果是['a', 'b', 'c']


UPDATE:

感謝@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>

感謝大家。

+0

您可以撰寫使用'_.flow'功能,是你在找什麼? – vlaz

+0

@vlaz就是這樣。謝謝 – Stackle

回答

1

您可以使用Array.prototype.reduce()_.reduce()來實現。該降低被調用函數的陣列上:

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);

0

你可以使用_.split_.map和回調_.trim;

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