基于用户输入初始化JavaScript数组

基于用户输入初始化JavaScript数组,javascript,multidimensional-array,initialization,Javascript,Multidimensional Array,Initialization,我有一个小程序,允许用户为10个变量定义值,所有变量都可以是数组。然后我希望程序迭代所有可能的组合,然后将计算结果保存到一个变量中 之前,我硬编码它,通过在每个变量上循环来初始化结果数组SIGMA,不管它是向量还是单个值,即: SIGMA = new Array(A.length); for (i1=0; i1<A.length; i1++) { SIGMA[i1] = new Array(B.length); for (i2=0; i2<B.length; i2++) {

我有一个小程序,允许用户为10个变量定义值,所有变量都可以是数组。然后我希望程序迭代所有可能的组合,然后将计算结果保存到一个变量中

之前,我硬编码它,通过在每个变量上循环来初始化结果数组SIGMA,不管它是向量还是单个值,即:

SIGMA = new Array(A.length);
for (i1=0; i1<A.length; i1++) {
  SIGMA[i1] = new Array(B.length);
  for (i2=0; i2<B.length; i2++) {
    SIGMA[i1][i2] = new Array(C.length);
    for (i3=0; i3<C.length; i3++) {
      ...
    }
  }
}
这会产生一个10维的SIGMA数组,如果数组中包含几个或多个变量,那么处理速度会非常慢

我想做的是让它只为数组而不是奇异值的变量初始化SIGMA。因此,如果所有变量都是一个数字,除了两个,比如X和Y,那么我想要:

SIGMA = new Array(X.length);
for (i1=0; i1<X.length; i1++) {
  SIGMA[i1] = new Array(Y.length);
}
但是,我不太确定最好的方法是什么,因为for循环的数量取决于数组中变量的数量。我想我要么需要使用递归函数,要么以某种方式合并while循环


有人对如何做到这一点有什么好的想法吗?谢谢

我通过制作一个包含for循环的递归函数来解决这个问题:

sigma = new Array(eval(var_idx[0]).length);
sigma_forloop('sigma', 0)

function sigma_forloop(X, idx) {
    for (var i=0; i<eval(var_idx[idx]).length; i++) {
        eval(X + '[' + i + ']' + ' = new Array(eval(var_idx[idx+1]).length);')
        if (idx+2 < var_idx.length) {
            var Y = X + '[' + i + ']';
            sigma_forloop(Y, idx+1);
        }
    }
}
变量'var_idx'位于字符串数组中,其中包含具有多个值的变量,因此,我要循环的是这些变量


我相信有一种更简单的方法可以做到这一点,但这一方法目前仍然有效。

就是……就是这样。我使用JavaScript的经验非常有限,所以当某些东西真正起作用时,我很高兴。有没有更简单的方法来实现这一点?