Jér*_*nge 4 javascript arrays function
仍然是Javascript的新手.我需要编写一个20 x 20矩阵的函数.我的所有函数都输入一个数字并返回一个数字(即相同的签名).例如Myfunctions [1] [2]应该返回一些我可以在代码中调用的函数.
在Java中,我通常会实现一个20 x 20对象的数组,其中每个对象将实现两个函数.但是,这可能在Javascript中吗?如果没有,我该如何处理类似的事情呢?如果我需要两个矩阵来模拟这对,这也是可以的.
谢谢.
由于函数是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)
有关:
| 归档时间: |
|
| 查看次数: |
1078 次 |
| 最近记录: |