Javascript - 以编程方式执行所有函数输入的方法

Javascript - Programmatically execute method on input of all functions

本文关键字:函数 输入 方法 执行 编程 方式 Javascript      更新时间:2023-09-26

我想在函数列表中添加一个解析器,例如:

var list = {
    function1: function(input){},
    function2: function(input){}
}

我希望所有input参数都预先设置了另一个函数。这可能吗?

有什么建议吗?

提前致谢

你的意思是这样吗?它使用将f预应用于其输入的方法创建funcs的新副本。

function addPreProcessing(funcs, f) {
    return Object.keys(funcs).reduce(function (o, key) {
        o[key] = function (input) {
            return funcs[key](f(input));
        };
        return o;
    }, {});
}
var list = {
     log: function (input) { snippet.log(input); },
     quadruple: function (input) { return input * 4; }
};
// preprocess all inputs by doubling them
var list2 = addPreProcessing(list, function (input) {
     return input * 2;
});
list2.log(5);                        // logs 10   ( 5 * 2 )
snippet.log(list2.quadruple(1));     // logs 8    ( 1 * 2 * 4)
<!-- Provides the `snippet` object, see http://meta.stackexchange.com/a/242144/134069 -->
<script src="http://tjcrowder.github.io/simple-snippets-console/snippet.js"></script>

这是上面addPreProcessing函数的lodash版本:

function addPreProcessing(funcs, f) {
    return _.mapValues(funcs, _.flowRight(_.partial(_.flow, f), _.identity));
}