Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/haskell/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在Javascript中声明和填充多维数组的有效方法_Javascript_Multidimensional Array - Fatal编程技术网

在Javascript中声明和填充多维数组的有效方法

在Javascript中声明和填充多维数组的有效方法,javascript,multidimensional-array,Javascript,Multidimensional Array,在JavaScript中声明和填充多维数组最有效的方法是什么 我目前正在这样做: ff = Array(); for (i = 0; i < 30; i++) { ff[i] = Array(); ff[i][i] = 1.0; } ff[1][2] = 0.041666667; ff[1][3] = 0.000694444; ff[2][3] = 0.016666667; ff[1][4] = 0.000011574; ff[2][4] = 0.000277778; f

在JavaScript中声明和填充多维数组最有效的方法是什么

我目前正在这样做:

ff = Array();
for (i = 0; i < 30; i++) {
    ff[i] = Array();
    ff[i][i] = 1.0;
}

ff[1][2] = 0.041666667;
ff[1][3] = 0.000694444;
ff[2][3] = 0.016666667;
ff[1][4] = 0.000011574;
ff[2][4] = 0.000277778;
ff[3][4] = 0.016666667;
ff[1][5] = 0.000011574;
ff[2][5] = 0.000035315;
ff[3][5] = 0.00211888;
ff[4][5] = 0.1271328;
ff[1][6] = 0.000000025;
ff[2][6] = 0.000000589;
ff[3][6] = 0.000035315;
ff[4][6] = 0.00211888;
ff[5][6] = 0.016666667;
ff=Array();
对于(i=0;i<30;i++){
ff[i]=数组();
ff[i][i]=1.0;
}
ff[1][2]=0.041666667;
ff[1][3]=0.000694444;
ff[2][3]=0.016666667;
ff[1][4]=0.000011574;
ff[2][4]=0.000277778;
ff[3][4]=0.016666667;
ff[1][5]=0.000011574;
ff[2][5]=0.000035315;
ff[3][5]=0.00211888;
ff[4][5]=0.1271328;
ff[1][6]=0.000000025;
ff[2][6]=0.000000589;
ff[3][6]=0.000035315;
ff[4][6]=0.00211888;
ff[5][6]=0.016666667;

最多
ff[n][n]
其中
n
最多可以是30行,这导致数百行声明数组值(即使缩小了,这是否重要?)。我只需要填充数组的“上半部分”,因为
ff[n][n]=1
ff[I][j]=1/(ff[j][I])
,所以在声明之后,我在整个数组上循环并反转“上半部分”以填充“下半部分”一半。

我会做如下操作:然后我会将脚本放在一个单独的文件中,该文件可以缓存

ff=[];
ff[0]=[0.041666667,000694444,016666667,000277778,016666667];
ff[1]=[0.041666667,000694444,016666667,000277778,016666667];
ff[2]=[0.041666667,000694444,016666667,000277778,016666667];
ff[3]=[0.041666667,000694444,016666667,000277778,016666667];
ff[4]=[0.041666667,000694444,016666667,000277778,016666667];
ff[5]=[0.041666667,000694444,016666667,000277778,016666667];

从你的数字来看,你似乎在尝试在不同的时间单位之间转换

我想知道是否一个更好的适合不是一个对象

var seconds = {
  day:   86400,
  hour:   3600,
  minute:   60,
  second:    1
};

var conversions = {};

['day','minute','hour','second'].forEach(function(fromUnit){
  var subConversions = {};
  var fromValue = seconds[fromUnit];
  ['day','minute','hour','second'].forEach(function(toUnit){
    subConversions[toUnit] = fromValue / seconds[toUnit];
  });
  conversions[fromUnit] = subConversions;
});

function convert(value, from, to){
  return value * conversions[from][to];
}
这会给你带来很多好处

换算(1,'天','小时')==24

转换(1,'天','秒')==86400

换算(3,'小时','秒')==10800


即使事情比简单的时间转换更复杂,这种方法可能会产生更容易理解的代码。一旦你开始赋予多维数组的元素特殊含义,事情就会变得非常糟糕。

值是如何生成的?不要使用
ff=array()使用文字声明:
ff=[]测试@Chad you是一个现实生活中的jslint:DSo,看起来这些是时间转换因子;你的数组是如何构造的?有没有一种方法可以从数值索引中确定要转换的内容。还有,对象不是更适合这里吗?非常感谢-你对我的问题的原始评论让我思考,这当然是一种更简洁的方式。最后一点:如果这些值是相对静态的,那么编写一个脚本来生成
转换
,然后将其导出到JSON是有意义的,然后手动将JSON插入到脚本中,以静态方式定义内容。