gpt4 book ai didi

JavaScript:连续调用对象上的函数列表

转载 作者:行者123 更新时间:2023-11-30 07:04:41 25 4
gpt4 key购买 nike

假设我有一个存储在数组中的函数列表:

var myFunctions = [
function (i) {return i + 2},
function (i) {return i * 2},
function (i) {return i - 3}
]

将所有这些函数连续调用为对象的最佳方法是什么,即得到 ((n + 2) * 2) - 3 作为结果?

使用外部库的答案,如 Underscore欢迎:)

最佳答案

数组也是 JavaScript 对象。在您的例子中,您创建了一个数组和它的三个属性,即 f1f2f3。相反,您可以简单地做

var myFunctions = [
function(i) {
return i + 2
},
function(i) {
return i * 2
},
function(i) {
return i - 3
}
];

现在我们有了一个函数数组,我们可以使用Array.prototype.reduce像这样应用这些函数的函数

var result = myFunctions.reduce(function(result, currentFunction) {
return currentFunction(result);
}, n);

n 是要传递给要应用的函数列表的实际初始值。 reduce 获取初始值和第一个函数,并将它们分别作为 resultcurrentFunction 传递。我们在 result 上应用 currentFunction 并返回值。在下一次迭代中,返回值将是 resultcurrentFunction 将是第二个函数,依此类推。

如果你不喜欢函数式方法,你可以简单地使用一个 for 循环,就像这样

var i = 0, result = 0, n = 10;
for (var i = 0; i < myFunctions.length; i += 1) {
n = myFunctions[i](n);
}

关于JavaScript:连续调用对象上的函数列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24584280/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com