如何在 JavaScript 中实现函数数组?

2024-03-08

我对 JavaScript 还很陌生。我需要编写一对 20 x 20 矩阵函数。我的所有函数都接受一个数字并返回一个数字(即相同的签名)。例如,Myfunctions[1][2] 应该返回一对可以在代码中调用的函数。

在 Java 中,我通常会实现一个 20 x 20 对象的数组,其中每个对象将实现两个函数。但是,这在 JavaScript 中可能吗?如果没有,我应该如何继续获得类似的东西?如果我需要两个矩阵来模拟这对,这也可以。


由于函数是 JavaScript 中的对象,因此您可以非常轻松地定义它们的数组。

function foo () { ... }
function bar () { ... }
function baz () { ... }

var fns = [foo, bar, baz];

签名根本不重要。


从那里您可以开始在循环中动态生成函数,而不是显式声明每个函数:

function generator(n)
{
    return function ()
    {
        return n*n;
    };
}

var squareFuncs = [];

for (var i=0; i<10; i++)
{
    squareFuncs.push(generator(i));
}

然后你可以构建函数数组的数组(就像任何其他对象一样,记住):

function anotherGenerator(a, b)
{
    return function ()
    {
        return a+b;
    };
}

var sumFuncs = [],
    temp,
    i,
    j;

for (i=0; i<20; i++)
{
    temp = [];
    for (j=0; j<20; j++)
    {
        temp.push(anotherGenerator(i, j));
    }
    sumFuncs.push(temp);
}

Now sumFuncs是一个二维函数数组(实际上是数组的数组),用于计算该函数在矩阵中的坐标之和。这听起来可能比实际情况更复杂,所以这里有一个例子:

var foo = sumFuncs[7][2],
    sum = foo();
console.log(sum); // prints 9

Related:

  • 我可以将 JavaScript 函数存储在数组中吗? https://stackoverflow.com/questions/3592468/can-i-store-javascript-functions-in-arrays
  • JavaScript 函数数组 https://stackoverflow.com/questions/4908378/javascript-array-of-functions
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何在 JavaScript 中实现函数数组? 的相关文章

随机推荐