如何在Javascript中实现一组函数?

Jér*_*nge 4 javascript arrays function

仍然是Javascript的新手.我需要编写一个20 x 20矩阵的函数.我的所有函数都输入一个数字并返回一个数字(即相同的签名).例如Myfunctions [1] [2]应该返回一些我可以在代码中调用的函数.

在Java中,我通常会实现一个20 x 20对象的数组,其中每个对象将实现两个函数.但是,这可能在Javascript中吗?如果没有,我该如何处理类似的事情呢?如果我需要两个矩阵来模拟这对,这也是可以的.

谢谢.

Mat*_*all 8

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

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

var fns = [foo, bar, baz];
Run Code Online (Sandbox Code Playgroud)

签名无关紧要.


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

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

var squareFuncs = [];

for (var i=0; i<10; i++)
{
    squareFuncs.push(generator(i));
}
Run Code Online (Sandbox Code Playgroud)

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

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);
}
Run Code Online (Sandbox Code Playgroud)

现在sumFuncs是一个二维数组(实际上是一个数组数组),它们计算矩阵中该函数坐标的总和.这可能听起来比实际上更复杂,所以这是一个例子:

var foo = sumFuncs[7][2],
    sum = foo();
console.log(sum); // prints 9
Run Code Online (Sandbox Code Playgroud)

有关: