0

我对迭代函数中的正确语法有疑问。我想将一个主阵列与一大组(180+)其他阵列进行比较。要比较的大量数组被系统地命名为(scorespec1、scorespec2、scorespec3...)。每次比较都不是一对一的,而是通过一种算法进行的,然后将结果存储在另一组数组中,这些数组也系统地命名以供以后查询。我还不担心让算法正确。我只是不确定迭代数组的正确语法。例如,这只是我尝试过但未能正常工作的语法结构之一:

for (i=01;i=186;i++){
  if (scorespec+(i)[04]=unknownspec[16]){
    resultarray+(i)[01]=True;
  else
    resultarray+(i)[01]=False;}}

我的主要问题是我不知道如何构造语法以将计数器变量包含在我的 for 循环中的变量名中。除了上面显示的内容之外,我还尝试了各种不同的语法,但它似乎无法正常工作。我应该使用什么语法?

4

2 回答 2

0

声明分为三个部分for

for ([initialExpression]; [condition]; [incrementExpression]) {
    // The statement (i.e. what will happen on each iteration)
}

要遍历一个数组,我们需要数组的长度和一个计数器,它会在我们迭代时向那个长度移动。这是通常的模式:

var myArray = ['foo', 'bar', 'far']; //...

for (var i = 0; i < myArray.length; i++) {
    myArray[i]; // <- this is the current array item
}

像这样缓存数组的长度是明智的:

for (var i = 0, l = myArray.length; i < l; i++) {
    myArray[i]; // <- this is the current array item
}

此外,仅供参考,您的布尔值,真假,不应大写。

于 2011-12-30T14:51:39.537 回答
0

如果您在全局范围内声明了数组,则可以使用 window 对象访问它们:

var scorespec1 = "123";
var scorespec2 = "456";

for ( var i = 1; i < 3; i++ ){
  alert(window['scorespec' + i]);
}

或者你可以使用缓慢而邪恶的评估:

var scorespec1 = "123";
var scorespec2 = "456";

for ( var i = 1; i < 3; i++ ){
  var scorespec;
  eval("scorespec = scorespec" + i);
  alert(scorespec);
}
于 2011-12-30T14:52:23.633 回答